home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / docs / inter45c / opcodes.lst < prev    next >
File List  |  1995-03-12  |  100KB  |  4,850 lines

  1. [Last change: 3/12/95]
  2.  
  3. ------------------------------------------------------------
  4. This is DOC 'bout undocument command and document command
  5. of any last processors. And 'bout some registers and
  6. Chip specified stuffs.
  7. ------------------------------------------------------------
  8.  (C) (P) Potemkin's Hackers Group 1994,1995
  9. ------------------------------------------------------------
  10. Revision 1.22             24 February 1995
  11. ------------------------------------------------------------
  12. All Your messages send to ->
  13. E-mail: avp@iron.misa.ac.ru
  14. AirMail:
  15.     111538 RUSSIA,    Moscow
  16.     P.O.        box 430
  17.     Potemkin's Hackers Group
  18. -------------------------------------------------------------
  19.  
  20.  
  21. ---------------------------------------------------
  22. AAA   -     ASCII adjust AX after addition
  23.  
  24.  
  25. CPU:  8086+
  26.  
  27. Type of Instruction: User
  28.  
  29. Instruction:  AAA   ; (no operands)
  30.  
  31.  
  32. Description:
  33.  
  34.     IF ((( AL and 0FH ) > 9 ) or (AF==1)
  35.     THEN {
  36.         IF CPU<286 THEN {  AL <- AL+6 }
  37.                ELSE {  AX <- AX+6 }
  38.         AH <- AH+1
  39.         CF <- 1
  40.         AF <- 1
  41.     } ELSE {
  42.         CF <- 0
  43.         AF <- 0
  44.     }
  45.     AL <- AL and 0Fh
  46.  
  47.  
  48. Note: This istruction incorrectly documented in Intel's materials.
  49.       See description field.
  50.  
  51. Flags Affected:    AF,CF        (modified)
  52.         OF,SF,ZF,PF (undefined)
  53.  
  54.  
  55. CPU mode: RM,PM,VM,SMM
  56.  
  57. +++++++++++++++++++++++
  58. Physical Form:
  59. COP (Code of Operation)     : 37H
  60.  
  61. Clocks:
  62.         AAA
  63. 8086:        4
  64. 8088:        4
  65. 80186:        8
  66. 80286:        3
  67. 80386:        4
  68. i486:        3
  69. Pentium:    3
  70.  
  71. Cx486SLC:    4
  72. Cx486DX:    4
  73. IBM 486BL3X:    4
  74. UMC U5S:    1
  75.  
  76.  
  77. ---------------------------------------------------
  78. AAD    - ASCII adjust AX before Division
  79.  
  80. CPU:  8086+
  81.  
  82. Type of Instruction: User
  83.  
  84. Instruction:  AAD basen
  85.  
  86.  
  87. Description:
  88.         AL <- (AH*basen) + AL
  89.         AH <- 0
  90.  
  91.  
  92.  
  93. Flags Affected: SF,ZF,PF    (modified)
  94.         OF,AF,CF    (undefined)
  95.  
  96. CPU mode: RM,PM,VM,SMM
  97.  
  98. Note:    AAD    without operands means AAD with operand 0AH.
  99.  
  100. Note: NECs understand only AAD 0AH form.
  101.  
  102. +++++++++++++++++++++++
  103.  
  104. Physical Form: AAD imm8
  105.  
  106. COP (Code of Operation)     : D5H    imm8
  107.  
  108. Clocks:        AAD 0AH
  109. 8086:        60
  110. 80186:        15
  111. 80286:        14
  112. 80386:        19
  113. i486:        14
  114. Pentium:    10
  115.  
  116. Cx486SLC:    4
  117. Cx486DX:    4
  118.  
  119. IBM 486BL3X:    15
  120. UMC    U5S:    11
  121.  
  122. ---------------------------------------------------
  123. AAM    - ASCII adjust AX after Multiply
  124.  
  125. CPU:  8086+
  126.  
  127. Type of Instruction: User
  128.  
  129. Instruction:  AAM basen
  130.  
  131.  
  132. Description:
  133.         AH <- AL  / basen
  134.         AL <- AL MOD basen
  135.  
  136.  
  137.  
  138. Flags Affected: SF,ZF,PF    (modified)
  139.         OF,AF,CF    (undefined)
  140.  
  141. CPU mode: RM,PM,VM,SMM
  142.  
  143. Note:    AAM    without operands means AAM with operand 0AH.
  144.  
  145. WARNING: NECs understand only AAM 0Ah form.
  146.  
  147. +++++++++++++++++++++++
  148.  
  149. Physical Form: AAM imm8
  150.  
  151. COP (Code of Operation)     : D4H    imm8
  152.  
  153. Clocks:        AAM 0AH
  154. 8086:        83
  155. 80186:        19
  156. 80286:        16
  157. 80386:        17
  158. i486:        15
  159. Pentium:    18
  160.  
  161. Cx486SLC:    16
  162. Cx486DX:    16
  163.  
  164. IBM 486BL3X:    17
  165. UMC    U5S:    12
  166.  
  167. ---------------------------------------------------
  168. ADD4S  -  Addition for packed BCD strings
  169.  
  170.  
  171. CPU: NEC V20/V30
  172.  
  173. Type of Instruction: User
  174.  
  175. Instruction:  ADD4S
  176.  
  177.  
  178. Description:
  179.  
  180.     BCD STRING (ADDRESS=ES:DI,LENGTH=CL) <-
  181.       BCD STRING (ADDRESS=DS:SI,LENGTH=CL) +
  182.       BCD STRING (ADDRESS=ES:DI,LENGTH=CL);
  183.  
  184. Note:    si,di, other registers not changed
  185.  
  186. Flags Affected: OF,CF,ZF
  187.     ;;  ZF set if both strings are zeros.
  188.     ;;  CF,OF set as result of operation with most
  189.     ;;  signification BCDs.
  190.  
  191. CPU mode: RM
  192.  
  193. +++++++++++++++++++++++
  194. Physical Form:
  195. COP (Code of Operation)     : 0FH 20H
  196.  
  197. Clocks:
  198.         ADD4S
  199. NEC V20:    ~19*(CL/2)+7
  200.  
  201. ---------------------------------------------------
  202. BOUND    -  Chack Array Index Against Bounds
  203.  
  204. CPU:  80186+,NECs
  205.  
  206. Type of Instruction: User - HLL support
  207.  
  208. Instruction:  BOUND index,bound_array
  209.  
  210.  
  211. Description:
  212.  
  213.         IF (index < (opsize ptr [bound_array]))
  214.            OR
  215.            (index > (opsize ptr [bound_array+opsize]))
  216.         THEN  INT 5;
  217.  
  218.  
  219.  
  220. Flags Affected: No Flags Affected
  221.  
  222. CPU mode: RM,PM,VM,SMM
  223.  
  224. Note:     (186s&NECs) saved CS:IP BOUND interrupt as pointer to following
  225.       instruction that self.
  226.      (286+) saved as pointer to BOUND instruction.
  227.  
  228.  
  229.  
  230. +++++++++++++++++++++++
  231.  
  232. Physical Form: BOUND reg16,mem32
  233.            BOUND reg32,mem64
  234.  
  235. COP (Code of Operation)     : 62H    Postbyte
  236. Note: for 32bit op. add Pfix 66h if in 16bit mode
  237.  
  238. Clocks:        BOUND reg16,mem16
  239.         In Range    Out Range
  240. 80186:                33-35
  241. 80286:        13        int+13
  242. 80386:        10
  243. i486:        7
  244. Pentium:    8        int+32
  245.  
  246. Cx486SLC:    11        int+11
  247. Cx486DX:    11        int+11
  248.  
  249.  
  250.  
  251. ---------------------------------------------------
  252. BSWAP  - Bytes Swap
  253.  
  254.  
  255. CPU:  I486 +
  256.  
  257. Type of Instruction: User
  258.  
  259. Instruction: BSWAP dwordr
  260.  
  261. Description:
  262.  
  263.          XCHG  BYTE dwordr[31:24],dwordr[7:0]
  264.          XCHG  BYTE dwordr[23:16],dwordr[15:8]
  265.  
  266.          ; Need Good Picture to Show It
  267.  
  268. Notes: This instruction used for converting big-endian
  269. (Intel) format to little-endian (Motorolla etc.) format.
  270.  
  271.  
  272. Flags Affected: None
  273. CPU mode: RM,PM,VM,SMM
  274.  
  275. Physical Form:         BSWAP r32
  276. COP (Code of Operation): 0FH 11001rrr  (For 32bit segment)
  277. Clocks: Cyrix Cx486SLC : 4
  278.           i486     : 1
  279.           Pentium  : 1
  280.     Cyrix Cx486DX  : 4
  281.     UMC   U5S      : 2
  282.     IBM 486BL3X    : 9
  283. ---------------------------------------------------
  284. CALLN      - Call Native Mode Routine
  285.  
  286.  
  287. CPU: NEC/Sony V20/V30 etc
  288.  
  289. Type of Instruction: System
  290.  
  291. Instruction:  CALLN intnum
  292.  
  293.  
  294. Description:
  295.     CALLN instruction call (interrupt service in Native Mode)
  296.     from 8080 emulation mode:
  297.         PUSH    FLAGS
  298.         PUSH    CS
  299.         PUSH    IP
  300.         IF <- 0
  301.         TF <- 0
  302.         MD <- 1
  303.         MOV    CS,0:[intnum*4+2]
  304.         MOV    IP,0:[intnum*4]
  305.  
  306.  
  307.  
  308. Flags Affected: IF,TF,MD
  309.  
  310. CPU mode: 8080 Emulation
  311.  
  312. +++++++++++++++++++++++
  313. Physical Form: CALLN imm8
  314. COP (Code of Operation)     : EDH EDH imm8
  315.  
  316. Clocks:
  317. NEC V20/V30:    38-58
  318.  
  319.  
  320. ---------------------------------------------------
  321. CMPXCHG8B  - Compare and exchange 8 bytes
  322.  
  323.  
  324. CPU:  Pentium (tm)
  325.  
  326. Type of Instruction: Operation
  327.  
  328. Instruction: CMPXCHG8B dest
  329.  
  330. Note: dest is memory operand: QWORD PTR [memory]
  331.  
  332. Description:
  333.  
  334.     IF ( QWORD(EDX:EAX) = dest) THEN
  335.              {
  336.              ZF <- 1;
  337.              dest <- QWORD(ECX:EBX);
  338.              }
  339.            ELSE
  340.              {
  341.              ZF <- 0;
  342.              EDX:EAX <- dest
  343.              }
  344.       END
  345.  
  346. Flags Affected:     ZF
  347.  
  348. CPU mode: RM,PM,VM,SMM
  349.  
  350. Physical Form:           CMPXCHG8B mem64
  351. COP (Code of Operation)     : 0FH C7H Postbyte
  352. Clocks:          Pentium     : 10
  353.  
  354. Note: Postbyte MMRRRMMM:  MM<>11 if (==) then INT 6
  355.  
  356. ---------------------------------------------------
  357. CMPXCHG     - Compare and exchange
  358.  
  359.  
  360.  
  361. CPU:  i486+
  362.  
  363. Type of Instruction: User
  364.  
  365. Instruction: CMPXCHG dest,sorc
  366.  
  367.  
  368. Description:
  369.  
  370.     Acc = if OperationSize(8)  -> AL
  371.          OperationSize(16) -> AX
  372.          OperationSize(32) -> EAX
  373.  
  374.     IF ( Acc = dest) THEN
  375.              {
  376.              ZF <- 1;
  377.              dest <- sorc;
  378.              }
  379.            ELSE
  380.              {
  381.              ZF <- 0;
  382.              Acc <- dest;
  383.              }
  384.       END
  385.  
  386. Note: This instruction used to support semaphores
  387.  
  388.  
  389. Flags Affected:     ZF ( see description)
  390.          OF,SF,AF,PF,CF ( like CMP instruction ) ( see description)
  391.  
  392. CPU mode: RM,PM,VM,SMM
  393.  
  394. +++++++++++++++++++++++
  395. Physical Form:           CMPXCHG  r/m8,r8
  396. COP (Code of Operation)     : 0FH A6H Postbyte    ; i486 (A-B0 step)
  397.              : 0FH B0H Postbyte    ; i486 (B1+ step clones
  398.                            ;      and upgrades)
  399.  
  400. Clocks:
  401.        Intel i486     :  6/7     if compare OK
  402.              :  6/10 if compare FAIL
  403.      Cyrix Cx486SLC     :  5/7
  404.      Pentium (tm)     :  6
  405.  
  406. Penalty if cache miss     :
  407.       Intel i486     : 2
  408.      Cyrix Cx486SLC     : 1
  409. +++++++++++++++++++++
  410. Physical Form:           CMPXCHG  r/m16,r16
  411.                CMPXCHG  r/m32,r32
  412. COP (Code of Operation)     : 0FH A7H Postbyte    ; i486 (A-B0 step)
  413.              : 0FH B1H Postbyte    ; i486 (B1+ step clones
  414.                            ;      and upgrades)
  415.  
  416. Clocks:
  417.        Intel i486     :  6/7     if compare OK
  418.              :  6/10 if compare FAIL
  419.      Cyrix Cx486SLC     :  5/7
  420.      Pentium (tm)     :  6
  421.  
  422. Penalty if cache miss     :
  423.       Intel i486     : 2
  424.      Cyrix Cx486SLC     : 1
  425.  
  426.  
  427.  
  428. ---------------------------------------------------
  429. CPUID - CPU Identification
  430.  
  431.  
  432. CPU:  Intel 486DX/SX/DX2 SL Enhanced and all later
  433. Intel processors include ( IntelDX4, IntelSX2,
  434. Pentium etc.), UMC microprocessors: U5S,U5SD,U5S-VL.
  435.  
  436. Note: i.e.  1993+ years processors produced by Intel
  437. Note: To know if your CPU support CPUID instruction
  438. try to set ID flag ( bit 21 of EFLAGS ) to 1, and
  439. if it sets this mean that CPUID support.(Soft).
  440. Or If Your CPU is Intel Look for '&E' signature on
  441. Top side of Chip.(Hard)
  442.  
  443. Type of Instruction: Operation
  444.  
  445. Instruction: CPUID
  446.  
  447. Description:
  448.  
  449.     IF (EAX=0) THEN
  450.           {
  451.           EAX <- Maximum value of EAX to CALL CPUID instruction
  452.             1 for all processors (date 1 September 1994)
  453.             may be >1 in future microprocessors
  454.  
  455.           ;; EBX,EDX and ECX contain a OEM name string
  456.           ;; for Intel this string is 'GenuineIntel'
  457.  
  458.            EBX <- 756E6547H i.e. 'Genu'
  459.            EDX <- 49656E69H i.e. 'ineI'
  460.            ECX <- 6C65746EH i.e. 'ntel'
  461.  
  462.           ;; for UMC   this string is 'UMC UMC UMC '
  463.  
  464.            EBX <- 32434D55H i.e. 'UMC '
  465.            EDX <- 32434D55H i.e. 'UMC '
  466.            ECX <- 32434D55H i.e. 'UMC '
  467.  
  468.           }
  469.     ELSEIF (EAX=1) THEN
  470.           {
  471.           EAX[3:0]    <- Stepping ID
  472.           EAX[7:4]    <- Model
  473.           EAX[11:8] <- Family
  474.              ;    4 - i486 family
  475.              ;    5 - Pentium family
  476.           EAX[15:12] <- Reserved
  477.              ;    set to 0 now
  478.              ;    but I'm sure that for Pentium OverDrive for P54C
  479.              ;this field will be set to 1
  480.           EAX[31:16] <- Reserved and set to 0s now
  481.  
  482.           EDX <- Compability flags
  483.           ;; below all info if bit flag =1
  484.          EDX[0] <- FPU on Chip
  485.          EDX[1] <- Virtual Mode Extention present
  486.          EDX[2] <- CPU support I/O Breakpoints
  487.          EDX[3] <- CPU support    4MB size pages
  488.          EDX[4] <- TSC present (See RDTSC command)
  489.          EDX[5] <- CPU have Pentium Compatible MSR
  490.                (Model Specified Registers.
  491.          EDX[6] <- Reserved (=0 now)
  492.          EDX[7] <- Machine Check exception
  493.          EDX[8] <- CMPXCHG8B instruction
  494.          EDX[9] <- APIC on Chip
  495.          EDX[31:10] <- Reserved and set to 0s now
  496.           }
  497.     ELSEIF ( EAX > 1 ) THEN
  498.           {
  499.           EAX,EBX,ECX,EDX <- Undefined
  500.           }
  501.     END.
  502.  
  503.  
  504. Global Note:
  505.        This file contain open i.e nonconfiderential information about
  506.        CPUID information.
  507.        If you want MORE try to contact Intel, may be (but I'm sure that not)
  508.          Intelers give you "Yellow Pages" (i.e Supplement to Pentium(tm)
  509.          Processor User's Manual) to read inside office.
  510.  
  511. Refer to:  Appendix B for more informations about CPU codes.
  512.  
  513. Here is 3 examples of Information we can may get from CPUID instruction:
  514.  
  515. 1) UMC U5S
  516.    Note: All UMC Chips: U5S,U5SD, 3V chips never have FPU on-chip,
  517.      and never support VME
  518.  
  519.  
  520. CPUID return CPUID information
  521. Maximum Available of CPUID info entrys:1
  522. Vendor string is : "UMC UMC UMC "
  523.  
  524. Model Info :
  525. Stepping ID is : 3
  526. Model           : 2
  527. Family           : 4
  528. M field           : 0
  529. Compability Flags:
  530. FPU on Chip               :-
  531. Virtual Mode Extensions present       :-
  532. CPU support I/O breakpoints       :-
  533. CPU support 4MB pages           :-
  534. Time Stamp Counter Presents       :-
  535. CPU have Pentium compatible MSRs   :-
  536. Machine Check Exception Presents   :-
  537. CMPXCHG8B instruction support       :-
  538. APIC on Chip               :-
  539.  
  540.  
  541.  
  542. 2) Intel 486
  543.    Note: All SL Enhanced 486:  { i486SX,i486DX,i486DX2 marked '&E' on chip
  544.    surface }, IntelSX2,IntelDX4 support VME !!!!
  545.    But: Sxs never have FPU on chip.
  546.  
  547. CPUID return CPUID information
  548. Maximum Available of CPUID info entrys:1
  549. Vendor string is : "GenuineIntel"
  550.  
  551. Model Info :
  552. Stepping ID is : 0
  553. Model           : 8
  554. Family           : 4
  555. M field           : 0
  556. Compability Flags:
  557. FPU on Chip               :+
  558. Virtual Mode Extensions present       :+
  559. CPU support I/O breakpoints       :-
  560. CPU support 4MB pages           :-
  561. Time Stamp Counter Presents       :-
  562. CPU have Pentium compatible MSRs   :-
  563. Machine Check Exception Presents   :-
  564. CMPXCHG8B instruction support       :-
  565. APIC on Chip               :-
  566.  
  567.  
  568. 3) Pentium
  569.    Note: P54C may say that build-in APIC not present if it
  570.    not supported by external hardware !!!!! (This data from
  571.    P54C in single processor configuration)
  572.  
  573. CPUID return CPUID information
  574. Maximum Available of CPUID info entrys:1
  575. Vendor string is : "GenuineIntel"
  576.  
  577. Model Info :
  578. Stepping ID is : 1
  579. Model           : 2
  580. Family           : 5
  581. M field           : 0
  582. Compability Flags:
  583. FPU on Chip               :+
  584. Virtual Mode Extensions present       :+
  585. CPU support I/O breakpoints       :+
  586. CPU support 4MB pages           :+
  587. Time Stamp Counter Presents       :+
  588. CPU have Pentium compatible MSRs   :+
  589. Machine Check Exception Presents   :+
  590. CMPXCHG8B instruction support       :+
  591. APIC on Chip               :-
  592.  
  593.  
  594. -> END of Examples
  595.  
  596.  
  597. Flags Affected: None
  598.  
  599. CPU mode: RM,PM,VM,SMM
  600.  
  601. Physical Form:         CPUID
  602. COP (Code of Operation): 0FH A2H
  603. Clocks:      486s & Pentium  (EAX=1)        : 14
  604.       486s & Pentium  (EAX=0 or EAX>1)  : 9
  605.  
  606.  
  607.  
  608.  
  609.  
  610. ---------------------------------------------------
  611. F4X4 - FPU: Multiplicate vector on Matrix 4x4
  612.  
  613.  
  614.  
  615. FPU:  IIT FPUs.
  616.  
  617. Type of Instruction: FPU instruction
  618.  
  619. Instruction: F4X4
  620.  
  621. Description:
  622.  
  623.     ;   This Instruction Multiplicate vector on
  624.     ; Matrix 4X4
  625.  
  626.  _  _        _               _    _  _
  627. |    |       |            |      |    |
  628. | Xn |       | A00  A01  A02  A03 |      | X0 |
  629. | Yn |    =  | A10  A11  A12  A13 |  X   | Y0 |
  630. | Zn |       | A20  A21  A22  A23 |      | Z0 |
  631. | Wn |       | A30  A31  A31  A33 |      | W0 |
  632. |_  _|       |_               _|      |_  _|
  633.  
  634.  
  635.      ; Data fetches/stores from/to FPU registers:
  636.  
  637.     # of      F E T C H E S          STORE
  638.        Register     Bank0 Bank1 Bank2    Bank0
  639.     ST      X0    A33   A31      Xn
  640.     ST(1)      Y0    A23   A21      Yn
  641.     ST(2)      Z0    A13   A11      Zn
  642.     ST(3)      W0    A03   A01      Wn
  643.     ST(4)        A32   A30
  644.     ST(5)        A22   A20
  645.     ST(6)        A12   A10
  646.     ST(7)        A02   A00
  647.  
  648.  
  649.  
  650. Note: See FSBP0,FSBP1,FSBP2 for more information
  651.  
  652.  
  653. FPU Flags Affected:  S
  654.  
  655. FPU mode: Any
  656.  
  657. Physical Form:         F4X4
  658. COP (Code of Operation): DBH F1H
  659. Clocks:       IIT 2c87    : 242
  660.        IIT 3c87    : 242
  661.        IIT 3c87SX  : 242
  662.  
  663.  
  664. ---------------------------------------------------
  665. FNSTDW - FPU Not wait Store Device Word register
  666.  
  667.  
  668. FPU:  i387SL Mobile
  669.  
  670. Type of Instruction: FPU instruction
  671.  
  672. Instruction: FNSTDW dest
  673.  
  674. Description:
  675.  
  676.     dest <- Device Word
  677.  
  678. Format of Device word:
  679.     bit(s)    Description
  680.     0-7    Reserved
  681.      8    S - Status bit:
  682.             if S=1 then FP device is a static design and OS
  683.             or APM Bios may set CLK slow to 0 Mhz without
  684.             lost any data.
  685.     9-15    Reserved
  686.  
  687.  
  688. Note: Device word register valid only after FNINIT
  689.  
  690.  
  691. FPU Flags Affected: None
  692.  
  693. CPU mode: Any
  694.  
  695. Physical Form:         FNSTDW     AX
  696. COP (Code of Operation): DFH E1H
  697. Clocks:          i387SL Mobile: 13
  698.  
  699.  
  700. ---------------------------------------------------
  701. FNSTSG - FPU Not wait Store Signature Word register
  702.  
  703.  
  704.  
  705. FPU:  i387SL Mobile
  706.  
  707. Type of Instruction: FPU instruction
  708.  
  709. Instruction: FNSTSG dest
  710.  
  711. Description:
  712.  
  713.     dest <- Signature Word
  714.  
  715. Format of Signature word:
  716.     bit(s)    Description
  717.      3-0    Revision
  718.      7-4    Steppin
  719.     11-8    Family
  720.     15-12    Version
  721.  
  722. Note:
  723.     For i387(tm) SL Mobile Signature is:
  724.         Version     = 2
  725.         Family     = 3   ; 387
  726.         Stepping = 1   ; Ax step
  727.         Revision = 0   ; x0 step
  728.                 i.e i387(tm) SL is A0 step
  729.  
  730. Note: This FPU is out of life
  731.  
  732.  
  733. Note: Signature word register valid only after FNINIT
  734.  
  735.  
  736. FPU Flags Affected: None
  737.  
  738. CPU mode: Any
  739.  
  740. Physical Form:         FNSTSG     AX
  741. COP (Code of Operation): DFH E2H
  742. Clocks:          i387SL Mobile: 13
  743.  
  744.  
  745. ---------------------------------------------------
  746. FRICHOP - FPU: Round to Integer chop method
  747.  
  748.  
  749. FPU:  Cyrix FPUs and 486s with FPU on chip
  750.  
  751. Type of Instruction: FPU instruction
  752.  
  753. Instruction: FRICHOP
  754.  
  755. Description:
  756.  
  757.     ST <- ROUND ( ST,CHOP )
  758.  
  759. Note:
  760.     This instruction calculate rounding ST toward zero
  761.     i.e.  ignoring part righter that decimal .
  762.  
  763. Examples:
  764.  
  765.      1.2   ->   1.0
  766.     -1.2   ->  -1.0
  767.      3.0   ->   3.0
  768.      0.0   ->   0.0
  769.      1.5   ->   1.0
  770.     -2.0   ->  -2.0
  771.  
  772.  
  773. FPU Flags Affected:  S,P,D,I,C1
  774.  
  775. FPU mode: Any
  776.  
  777. Physical Form:         FRICHOP
  778. COP (Code of Operation): DDH FCH
  779. Clocks:          Cx83D87  : 15
  780.           Cx83S87  : 15
  781.           CxEMC87  : 15
  782.           Cx487DLC :
  783.  
  784.  
  785. ---------------------------------------------------
  786. FRINEAR - FPU: Round to Integer Nearest method
  787.  
  788.  
  789. FPU:  Cyrix FPUs and 486s with FPU on chip
  790.  
  791. Type of Instruction: FPU instruction
  792.  
  793. Instruction: FRINEAR
  794.  
  795. Description:
  796.  
  797.     ST <- ROUND ( ST,NEAREST )
  798.  
  799. Note:
  800.     This instruction calculate rounding ST toward nearest
  801.  
  802. Examples:
  803.  
  804.      1.2   ->   1.0
  805.     -1.2   ->  -1.0
  806.      3.0   ->   3.0
  807.      0.0   ->   0.0
  808.      1.5   ->   1.0
  809.      1.8   ->   2.0
  810.     -2.0   ->  -2.0
  811.  
  812.  
  813. FPU Flags Affected:  S,P,D,I,C1
  814.  
  815. FPU mode: Any
  816.  
  817. Physical Form:         FRINEAR
  818. COP (Code of Operation): DFH FCH
  819. Clocks:          Cx83D87  : 15
  820.           Cx83S87  : 15
  821.           CxEMC87  : 15
  822.           Cx487DLC :
  823.  
  824.  
  825.  
  826. ---------------------------------------------------
  827. FRINT2 - FPU: Round to Integer
  828.  
  829.  
  830. FPU:  Cyrix FPUs and 486s with FPU on chip
  831.  
  832. Type of Instruction: FPU instruction
  833.  
  834. Instruction: FRINT2
  835.  
  836. Description:
  837.  
  838.     IF ( exact half ) THEN
  839.         {
  840.         ST <- SIGN(ST) * ROUND(ABS(ST)+0.5,NEAREST)
  841.         }
  842.         ELSE
  843.         {
  844.         ST <- ROUND ( ST,NEAREST )
  845.         }
  846.     END
  847.  
  848. Note:
  849.     This instruction calculate rounding ST toward nearest,
  850.     but if number is exact half then this instruction round
  851.     it toward signed infinity. Sign of this infinity is same
  852.     with sign of number.
  853.  
  854. Examples:
  855.  
  856.      1.2   ->   1.0
  857.     -1.2   ->  -1.0
  858.      3.0   ->   3.0
  859.      0.0   ->   0.0
  860.      1.5   ->   2.0
  861.      1.8   ->   2.0
  862.     -2.0   ->  -2.0
  863.     -1.5   ->  -2.0
  864.  
  865. FPU Flags Affected:  S,P,D,I,C1
  866.  
  867. FPU mode: Any
  868.  
  869. Physical Form:         FRINT2
  870. COP (Code of Operation): DBH FCH
  871. Clocks:          Cx83D87  : 15
  872.           Cx83S87  : 15
  873.           CxEMC87  : 15
  874.           Cx487DLC :
  875.  
  876.  
  877. ---------------------------------------------------
  878. FRSTPM - FPU Reset Protected Mode
  879.  
  880.  
  881.  
  882. FPU:  i287XL i287XLT
  883.  
  884. Type of Instruction: FPU instruction
  885.  
  886. Instruction: FRSTPM
  887.  
  888. Description:
  889.  
  890.     Reset Cooprocessor from Protected Mode
  891.     to Real Address mode.
  892.  
  893. FPU Flags Affected: None
  894.  
  895. CPU mode:Any ???
  896.  
  897. Physical Form:         FRSTPM
  898. COP (Code of Operation): DBH E5H
  899. Clocks:          i287XL   : 12
  900.           i287XLT  : 12
  901.  
  902.  
  903. ---------------------------------------------------
  904. FSBP0 - FPU: Set Bank pointer to Bank # 0
  905.  
  906.  
  907. FPU:  IIT FPUs.
  908.  
  909. Type of Instruction: FPU instruction
  910.  
  911. Instruction: FSBP0
  912.  
  913. Description:
  914.  
  915.     ;   This Instruction set current bank pointer to
  916.     ; Bank # 0.
  917.  
  918.     ;   Each bank contain eight 80bit registers
  919.     ;   There are 3 banks (0,1,2) in Chip
  920.  
  921.     ;   After initialization FPU select bank # 0.
  922.  
  923.  
  924. FPU Flags Affected:  None
  925.  
  926. FPU mode: Any
  927.  
  928. Physical Form:         FSBP0
  929. COP (Code of Operation): DBH E8H
  930. Clocks:       IIT 2c87    : 6
  931.        IIT 3c87    : 6
  932.        IIT 3c87SX  : 6
  933.  
  934.  
  935. ---------------------------------------------------
  936. FSBP1 - FPU: Set Bank pointer to Bank # 1
  937.  
  938.  
  939.  
  940. FPU:  IIT FPUs.
  941.  
  942. Type of Instruction: FPU instruction
  943.  
  944. Instruction: FSBP1
  945.  
  946. Description:
  947.  
  948.     ;   This Instruction set current bank pointer to
  949.     ; Bank # 1.
  950.  
  951.     ;   Each bank contain eight 80bit registers
  952.     ;   There are 3 banks (0,1,2) in Chip
  953.  
  954.     ;   After initialization FPU select bank # 0.
  955.  
  956.  
  957. FPU Flags Affected:  None
  958.  
  959. FPU mode: Any
  960.  
  961. Physical Form:         FSBP1
  962. COP (Code of Operation): DBH EBH
  963. Clocks:       IIT 2c87    : 6
  964.        IIT 3c87    : 6
  965.        IIT 3c87SX  : 6
  966.  
  967.  
  968. ---------------------------------------------------
  969. FSBP2 - FPU: Set Bank pointer to Bank # 2
  970.  
  971.  
  972.  
  973. FPU:  IIT FPUs.
  974.  
  975. Type of Instruction: FPU instruction
  976.  
  977. Instruction: FSBP2
  978.  
  979. Description:
  980.  
  981.     ;   This Instruction set current bank pointer to
  982.     ; Bank # 2.
  983.  
  984.     ;   Each bank contain eight 80bit registers
  985.     ;   There are 3 banks (0,1,2) in Chip
  986.  
  987.     ;   After initialization FPU select bank # 0.
  988.  
  989.  
  990. FPU Flags Affected:  None
  991.  
  992. FPU mode: Any
  993.  
  994. Physical Form:         FSBP2
  995. COP (Code of Operation): DBH EAH
  996. Clocks:       IIT 2c87    : 6
  997.        IIT 3c87    : 6
  998.        IIT 3c87SX  : 6
  999.  
  1000.  
  1001. ---------------------------------------------------
  1002. IBTS    -  Insert Bits String
  1003.  
  1004.  
  1005. CPU:  80386 step A0-B0 only
  1006.  
  1007. Type of Instruction: User
  1008.  
  1009. Instruction:  IBTS base,bitoffset,len,sorc
  1010.  
  1011.  
  1012. Description:
  1013.          Write bit string length <len> bits from
  1014.          <sorc> [bits <len> .. 0 ]    (lowest bits) to bitfield,
  1015.          defined by <base> and bitsoffset <bitoffset> from this base
  1016.          to start of the field to write. String write from this start
  1017.          field bit to higher memory addresses or register bits.
  1018.  
  1019.  
  1020.  
  1021. Flags Affected: None
  1022.  
  1023. CPU mode: RM,PM,VM
  1024.  
  1025. +++++++++++++++++++++++
  1026. Physical Form:      IBTS    r/m16,AX,CL,r16
  1027.           IBTS    r/m32,EAX,CL,r32
  1028. COP (Code of Operation)     : 0FH A7H Postbyte
  1029.  
  1030. Clocks:        IBTS
  1031. 80386:        12/19
  1032.  
  1033.  
  1034. ---------------------------------------------------
  1035. ICEBP  - PWI Mode BreakPoint, ICE address space
  1036.  
  1037.  
  1038.  
  1039. CPU:  IBM 486SLC2
  1040.  
  1041. Type of Instruction: System
  1042.  
  1043. Instruction: ICEBP
  1044.  
  1045. Description:
  1046.  
  1047.     IF (condition) THEN  ; see condition below
  1048.            {
  1049.            SAVE STATUS OF EXECUTION TO ICE space;
  1050.            ENTER SMM;
  1051.            }
  1052.        ELSE
  1053.           {
  1054.           INT 1;
  1055.           }
  1056.        END
  1057.  
  1058. Note:    This condition can be set before execution this instruction:
  1059.     CPL=0
  1060.     MSR1000H.EPCEA=1
  1061.     MSR1000H.EPWI=1
  1062.  
  1063.  
  1064.  
  1065. Flags Affected: None
  1066.  
  1067. CPU mode: RM,PM0
  1068.  
  1069. Physical Form:         ICEBP
  1070. COP (Code of Operation): F1H
  1071. Clocks:     IBM 486SLC2   : 460
  1072.  
  1073.  
  1074. ---------------------------------------------------
  1075. ICEBP  -  In-Circuit Emulator Breakpoint
  1076.  
  1077.  
  1078.  
  1079. CPU:  some models of i486, i386
  1080.  
  1081. Type of Instruction: System
  1082.  
  1083. Instruction: ICEBP
  1084.  
  1085. Description:
  1086.  
  1087.     IF (condition) THEN  ; see condition below
  1088.            {
  1089.            CHANGED TO THE ICE instruction mode;
  1090.            }
  1091.        ELSE
  1092.           {
  1093.           INT 1;
  1094.           }
  1095.        END
  1096.  
  1097. Note:    Condition  is  DR7.bit12=1
  1098.  
  1099. Note: This instruction very usefull to debbuging as Single-Byte Interrupt
  1100.       but it generate never int 3, but int 1.
  1101.  
  1102. Note: Frank van Gilluwe in his book "The PC Undocument", 1994 year say
  1103.       that this instruction is VERY UNDOCUMENT.
  1104.  
  1105. Flags Affected: None
  1106.  
  1107. CPU mode: RM,PM0
  1108.  
  1109. Physical Form:         ICEBP
  1110. COP (Code of Operation): F1H
  1111. Clocks:               : N/A
  1112.  
  1113.  
  1114.  
  1115. ---------------------------------------------------
  1116. ICERET    - Return from PWI mode, ICE space
  1117.  
  1118.  
  1119. CPU: IBM 486SLC2
  1120.  
  1121. Type of Instruction: System Operation
  1122.             (Work only then CPL=0)
  1123.  
  1124. Instruction: ICERET
  1125.  
  1126. Description:
  1127.           Load All Registers (Include Shadow Registers) from Table
  1128.           Which Begin on  place pointed ES:EDI, and return from PWI
  1129.           mode.
  1130.  
  1131. Format of ICERET Table:
  1132.  
  1133.            Offset  Len  Description
  1134.         0H    4    CR0
  1135.         4H    4    EFLAGS
  1136.         8H    4    EIP
  1137.         CH    4    EDI
  1138.         10H    4    ESI
  1139.         14H    4    EBP
  1140.         18H    4    ESP
  1141.         1CH    4    EBX
  1142.         20H    4    EDX
  1143.         24H    4    ESX
  1144.         28H    4    EAX
  1145.         2CH    4    DR6
  1146.         30H    4    DR7
  1147.         34H    4    TR     (16 bit, zero filled up)
  1148.         38H    4    LDT  ---------
  1149.         3CH    4    GS   ---------
  1150.         40H    4    FS   ---------
  1151.         44H    4    DS   ---------
  1152.         48H    4    SS   ---------
  1153.         4CH    4    CS   ---------
  1154.         50H    4    ES   ---------
  1155.         54H    4    TSS.attrib
  1156.         58H    4    TSS.base
  1157.         5CH    4    TSS.limit
  1158.         60H    4    Reserved
  1159.         64H    4    IDT.base
  1160.         68H    4    IDT.limit
  1161.         6CH    4    REP OUTS overrun flag
  1162.         70H    4    GDT.base
  1163.         74H    4    GDT.limit
  1164.         78H    4    LDT.attrib
  1165.         7CH    4    LDT.base
  1166.         80H    4    LDT.limit
  1167.         84H    4    GS.attrib
  1168.         88H    4    GS.base
  1169.         8CH    4    GS.limit
  1170.         90H    4    FS.attrib
  1171.         94H    4    FS.base
  1172.         98H    4    FS.limit
  1173.         9CH    4    DS.attrib
  1174.         A0H    4    DS.base
  1175.         A4H    4    DS.limit
  1176.         A8H    4    SS.attrib
  1177.         ACH    4    SS.base
  1178.         B0H    4    SS.limit
  1179.         B4H    4    CS.attrib
  1180.         B8H    4    CS.base
  1181.         BCH    4    CS.limit
  1182.         C0H    4    ES.attrib
  1183.         C4H    4    ES.base
  1184.         C8H    4    ES.limit
  1185.                 Unknown Unusable area
  1186.                 ;; Temporary registers:
  1187.         100H    4    TST
  1188.         104H    4    IDX
  1189.         108H    4    TMPH
  1190.         10CH    4    TMPG
  1191.         110H    4    TMPF
  1192.         114H    4    TMPE
  1193.         118H    4    TMPD
  1194.         11CH    4    TMPC
  1195.         120H    4    TMPB
  1196.         124H    4    TMPA
  1197.  
  1198.         128H    4    CR2
  1199.         12CH    4    CR3
  1200.         130H    4    MSR1001H (31-0)
  1201.         134H    4    MSR1001H (63-32)
  1202.         138H    4    MSR1000H (15-0)
  1203.         13CH    4    DR0
  1204.         140H    4    DR1
  1205.         144H    4    DR2
  1206.         148H    4    DR3
  1207.         14CH    4    PEIP
  1208.         Length of table is 150H bytes.
  1209.  
  1210. Note: For descriptor format refer to LOADALL and RES3 instructions.
  1211.  
  1212.  
  1213. Flags Affected: All (FLAGS Register Reload)
  1214.  
  1215. CPU mode: SMM
  1216.  
  1217. Physical Form:         ICERET
  1218. COP (Code of Operation): 0FH 07H  Note: Code is same with Intel's LOADALL
  1219. Clocks:     IBM 486SLC2   : 440
  1220.  
  1221.  
  1222.  
  1223. ---------------------------------------------------
  1224. INVD  - Invalidate Cache Buffer
  1225.  
  1226.  
  1227.  
  1228. CPU:  I486 +
  1229.  
  1230. Type of Instruction: System
  1231.  
  1232. Instruction: INVD
  1233.  
  1234. Description:
  1235.  
  1236.          FLUSH INTERNAL CACHE
  1237.    ( It means that all lines of internal caches sets as
  1238.     invalid )
  1239.      SIGNAL EXTERNAL CACHE TO FLUSH
  1240.  
  1241.  
  1242. Notes: This instruction not work in Real Mode and  in
  1243. Protected mode work only in ring 0 ;
  1244.  
  1245. Flags Affected: None
  1246.  
  1247. CPU mode: PM0,SMM?
  1248.  
  1249. Physical Form:         INVD
  1250. COP (Code of Operation): 0FH 08H
  1251. Clocks: Cyrix Cx486SLC : 4
  1252.           i486     : 4
  1253.           Pentium  : 15
  1254.  
  1255.  
  1256. ---------------------------------------------------
  1257. INVLPG    - Invalidate Page Entry In TLB
  1258.  
  1259.  
  1260.  
  1261. CPU:  I486 +
  1262.  
  1263. Type of Instruction: System
  1264.  
  1265. Instruction: INVLPG mem
  1266.  
  1267. Description:
  1268.  
  1269.     IF found in data or code (if both) (or common if single)
  1270.        TLB entry with linear address (page part) same as
  1271.        memory operand <mem> then mark this entry as Invalid;
  1272.  
  1273. Notes: This instruction not work in Real Mode and  in
  1274. Protected mode work only in ring 0 ;
  1275.  
  1276. Flags Affected: None
  1277.  
  1278. CPU mode: RM,PM,VM,SMM
  1279.  
  1280. Physical Form:         INVLPG mem
  1281. COP (Code of Operation): 0FH 01H mm111mmm
  1282. Clocks: Cyrix Cx486SLC : 4
  1283.           i486     : 12 if hit
  1284.                : 11 if not hit
  1285.           Pentium  : 25
  1286.  
  1287. ---------------------------------------------------
  1288. LOADALL     - Load All Registers
  1289.  
  1290.  
  1291. CPU:  Intel 386+ +all clones
  1292.  
  1293.  
  1294. Type of Instruction: System
  1295.             (Work only then CPL=0)
  1296.  
  1297. Instruction: LOADALL
  1298.  
  1299. Description:
  1300.           Load All Registers (Include Shadow Registers) from Table
  1301.           Which Begin on  place pointed ES:EDI
  1302.  
  1303. Format of LOADALL Table:
  1304.  
  1305.            Offset  Len  Description
  1306.         0H    4    CR0
  1307.         4H    4    EFLAGS
  1308.         8H    4    EIP
  1309.         CH    4    EDI
  1310.         10H    4    ESI
  1311.         14H    4    EBP
  1312.         18H    4    ESP
  1313.         1CH    4    EBX
  1314.         20H    4    EDX
  1315.         24H    4    ESX
  1316.         28H    4    EAX
  1317.         2CH    4    DR6
  1318.         30H    4    DR7
  1319.         34H    4    TR     (16 bit, zero filled up)
  1320.         38H    4    LDT  ---------
  1321.         3CH    4    GS   ---------
  1322.         40H    4    FS   ---------
  1323.         44H    4    DS   ---------
  1324.         48H    4    SS   ---------
  1325.         4CH    4    CS   ---------
  1326.         50H    4    ES   ---------
  1327.         54H    4    TSS.attrib
  1328.         58H    4    TSS.base
  1329.         5CH    4    TSS.limit
  1330.         60H    4    0s
  1331.         64H    4    IDT.base
  1332.         68H    4    IDT.limit
  1333.         6CH    4    0s
  1334.         70H    4    GDT.base
  1335.         74H    4    GDT.limit
  1336.         78H    4    LDT.attrib
  1337.         7CH    4    LDT.base
  1338.         80H    4    LDT.limit
  1339.         84H    4    GS.attrib
  1340.         88H    4    GS.base
  1341.         8CH    4    GS.limit
  1342.         90H    4    FS.attrib
  1343.         94H    4    FS.base
  1344.         98H    4    FS.limit
  1345.         9CH    4    DS.attrib
  1346.         A0H    4    DS.base
  1347.         A4H    4    DS.limit
  1348.         A8H    4    SS.attrib
  1349.         ACH    4    SS.base
  1350.         B0H    4    SS.limit
  1351.         B4H    4    CS.attrib
  1352.         B8H    4    CS.base
  1353.         BCH    4    CS.limit
  1354.         C0H    4    ES.attrib
  1355.         C4H    4    ES.base
  1356.         C8H    4    ES.limit
  1357.         CCH    4    Length of table
  1358.         D0H    30h    Unused,not loaded
  1359.         100H    4    Temporary Register IST
  1360.         104H    4    Temporary Register I
  1361.         108H    4    Temporary Register H
  1362.         10CH    4    Temporary Register G
  1363.         110H    4    Temporary Register F
  1364.         114H    4    Temporary Register E
  1365.         118H    4    Temporary Register D
  1366.         11CH    4    Temporary Register C
  1367.         120H    4    Temporary Register B
  1368.         124H    4    Temporary Register A
  1369.  
  1370.  
  1371.  
  1372. Format    of Attrib field:
  1373.  
  1374.            Byte    Description
  1375.            0    0s
  1376.            1    AR (Access Right) byte in the Descriptor format
  1377.             Note:
  1378.                P bit is a valid bit
  1379.                if valid bit=0 then Shadow Register is invalid and
  1380.                   INT 0DH - General Protection Fault call
  1381.                DPL of SS,CS det. CPL
  1382.            2-3    0s
  1383.  
  1384.  
  1385. Flags Affected: All (FLAGS Register Reload)
  1386.  
  1387. CPU mode: RM,PM0
  1388.  
  1389. Physical Form:         LOADALL
  1390. COP (Code of Operation): 0FH 07H
  1391. Clocks:          i386XX   : n/a
  1392.           i486XX   : n/a
  1393.  
  1394. Note: This operation used 102 data transfer cycles on 32bit bus
  1395.       Typical clocks:
  1396.           i386SX: ~350
  1397.           i386DX: ~290
  1398.           i486XX: ~220
  1399.  
  1400.  
  1401.  
  1402. ---------------------------------------------------
  1403. LOADALL     - Load All Registers From Table
  1404.  
  1405.  
  1406. CPU:  Intel 80286 and all its clones
  1407.  
  1408.  
  1409. Type of Instruction: System
  1410.             (Work only then CPL=0)
  1411.  
  1412. Instruction: LOADALL
  1413.  
  1414. Description:
  1415.           Load All Registers (Include Shadow Registers) from Table
  1416.           Which Begin on  000800H  Address, Len of this table is
  1417.           66H
  1418.  
  1419. Format of LOADALL Table:
  1420.  
  1421.            Address    Len  Description
  1422.         800H    6    None
  1423.         806H    2    MSW
  1424.         808H    14    None
  1425.         816H    2    TR
  1426.         818H    2    FLAGS
  1427.         81AH    2    IP
  1428.         81CH    2    LDTR
  1429.         81EH    2    DS
  1430.         820H    2    SS
  1431.         822H    2    CS
  1432.         824H    2    ES
  1433.         826H    2    DI
  1434.         828H    2    SI
  1435.         82AH    2    BP
  1436.         82CH    2    SP
  1437.         82EH    2    BX
  1438.         830H    2    DX
  1439.         832H    2    CX
  1440.         834H    2    AX
  1441.         836H    6    ES Shadow Descriptor
  1442.         83CH    6    CS Shadow Descriptor
  1443.         842H    6    SS Shadow Descriptor
  1444.         848H    6    DS Shadow Descriptor
  1445.         84EH    6    GDTR
  1446.         854H    6    LDT Shadow Descriptor
  1447.         85AH    6    IDTR
  1448.         860H    6    TSS Shadow Descriptor
  1449.  
  1450. Format    of Shadow Descriptor:
  1451.  
  1452.            Byte    Description
  1453.            0-2    24bit Phisical Address
  1454.         3    AR (Access Right) byte
  1455.            4-5    16bit Segment Limit
  1456.  
  1457.  
  1458. Format    of GDTR and IDTR:
  1459.  
  1460.            Byte    Description
  1461.            0-2    24bit Phisical Address
  1462.         3    0s
  1463.            4-5    16bit Segment Limit
  1464.  
  1465.  
  1466. Note: Using this instruction we may turn on "Big Real Mode" i.e. mode then
  1467. PG=1,PE=0,cpl=0. This mode very usefull,But Pentium never  support this
  1468. instruction.
  1469.  
  1470.  
  1471. Flags Affected: All (FLAGS Register Reload)
  1472.  
  1473. CPU mode: RM,PM0
  1474.  
  1475. Physical Form:         LOADALL
  1476. COP (Code of Operation): 0FH 05H
  1477. Clocks:          80286    : 195
  1478.  
  1479.  
  1480. ---------------------------------------------------
  1481. RDMSR  - Read From Model Specified Register
  1482.  
  1483.  
  1484. CPU:  Pentium (tm), IBM 386SLC,486SLC,486SLC2
  1485.  
  1486. Type of Instruction: System
  1487.  
  1488. Instruction: RDMSR
  1489.  
  1490. Description:
  1491.  
  1492.     IF (ECX is valid number of MSR) and (CPL=0)  THEN
  1493.           {
  1494.           EDX:EAX <- MSR [ECX];
  1495.           }
  1496.         ELSE
  1497.           {
  1498.           General Protection Fault  INT 0DH (0)
  1499.           }
  1500.     END
  1501.  
  1502.  
  1503. Valid number Of MSR is:
  1504.     Pentium:  0-2,4-0Eh,10h-13h
  1505.     IBM 486SLC2:  1000H-1002H
  1506.     IBM 386SLC:      1000H-1001H
  1507.     IBM 486SLC:      1000H-1001H
  1508.  
  1509.  
  1510. Flags Affected: None
  1511.  
  1512. CPU mode: RM,PM0,SMM
  1513.  
  1514. Physical Form:         RDMSR
  1515. COP (Code of Operation): 0FH 32H
  1516. Clocks:         Pentium   : 20-24
  1517.  
  1518. Note: The MSR # 3,0fh and >13h are reserved. Do not execute RDMSR/WRMSR with
  1519.       this values.
  1520.  
  1521.       Register    Description
  1522.  
  1523.       MSR 0  is Machine check Exception Address register (Read only)
  1524.         bits    Description
  1525.         63..32    Reserved
  1526.         31..0    Machine Check Phisical Address
  1527.  
  1528.       MSR 1  is Machine Check Type register (Read Only)
  1529.         bits    Description
  1530.         63..5    Reserved
  1531.         4    LOCK
  1532.             =1 if bus cycle called Machine Check was Locked
  1533.             =0 if --//-- not locked (normal)
  1534.         3    M/IO# \
  1535.         2    D/C#     State of output pins in bus cycle called
  1536.         1    W/R#  /     Machine check
  1537.         0    CHK  (Check)
  1538.             =1 after last read MSR 1 was Machine Check
  1539.             Note: This bit Clearing on reading
  1540.  
  1541.       MSR 2,4,5,6,7,8,9,Ah,Bh,Ch,Dh,Eh used to perform Cache,TLB,BTB testing.
  1542.          This registers named Test Registers 0,2-C.
  1543.  
  1544.       MSR Eh  is Test Register 12 (TR 12) (Read/Write)
  1545.         bits    Description
  1546.         63..4    Reserved
  1547.         3    CI
  1548.         2    SE
  1549.         1    TR (Tracing Control)
  1550.             After reset clear to zero.
  1551.             This bit enable/disable special branch trace
  1552.             message cycle which generating when BTB hit.
  1553.             =0 disable
  1554.             =1 enable
  1555.         0    NBP
  1556.  
  1557.       MSR 10h is Time Stamp Counter  (TSC) (Read/Write)
  1558.         Time Stamp Counter (as all other MSRs) is clearing to 0 when
  1559.         RESET pin shutdown and unchanged when INIT pin shutdown.
  1560.         TSC is incremented every CPU core clock cycle.
  1561.  
  1562.       MSR 11h is Control/Event Select Register (CESR) (Read/Write)
  1563.         Init value after reset = 00000000000000000h
  1564.         bits    Description
  1565.         63..25    Reserved
  1566.         24    Counting Method (Counter #1)
  1567.             =1 count CPU cycles
  1568.             =0 count events
  1569.         23    Allow count in CPL=3 (Counter #1)
  1570.             =1 Yes
  1571.             =0 No
  1572.         22    Allow count in CPL<3 (Counter #1)
  1573.             =1 Yes
  1574.             =0 No
  1575.         21..16    Event Type for Counter #1 (see below)
  1576.         15..9    Reserved
  1577.         8    Counting Method (Counter #0)
  1578.             =1 count CPU cycles
  1579.             =0 count events
  1580.         7    Allow count in CPL=3 (Counter #0)
  1581.             =1 Yes
  1582.             =0 No
  1583.         6    Allow count in CPL<3 (Counter #0)
  1584.             =1 Yes
  1585.             =0 No
  1586.         5..0    Event Type for counter #0
  1587.             Value    Event Type
  1588.             00h    Data Read
  1589.             01h    Data Write
  1590.             02h    Data TLB miss
  1591.             03h    Data Read Miss
  1592.             04h    Data Write miss
  1593.             05h    Write hit to Modified or Exclusive Cacheline
  1594.             06h    Data cache lines written back
  1595.             07h    Data cache snoops
  1596.             08h    Data cache snoops hit
  1597.             09h    Memory access in both pipes
  1598.             0Ah    Data bank access conflict
  1599.             0Bh    Misaligned data memory references
  1600.             0Ch    Code read
  1601.             0Dh    Code TLB miss
  1602.             0Eh    Code cache miss
  1603.             0Fh    Any segment register load
  1604.             10h    Segment descriptor cache accessed
  1605.             11h    Segment descriptor cache hit
  1606.             12h    Branches
  1607.             13h    BTB hit
  1608.             14h    Taken branch or BTB hit
  1609.             15h    Pipeline flushes
  1610.             16h    Instructions executed
  1611.             17h    Instruction executed in V pipes
  1612.             18h    Bus utilization
  1613.             19h    Pipeline stalled by write backups
  1614.             1Ah    Pipeline stalled by data memory read
  1615.             1Bh    Pipeline stalled by write to M or E line
  1616.             1Ch    Locked bus cycle
  1617.             1Dh    I/O cycle
  1618.             1Eh    Noncachable memory references
  1619.             1Fh    Pipeline stalled by AGI
  1620.             20h-21h    Reserved
  1621.             22h    FP operations
  1622.             23h    Breakpoint 0 match
  1623.             24h    Breakpoint 1 match
  1624.             25h    Breakpoint 2 match
  1625.             26h    Breakpoint 3 match
  1626.             27h    Hardware interrupt
  1627.             28h    Data read or data write
  1628.             29h    Data read/write miss
  1629.             2Ah-3Fh Reserved
  1630.  
  1631.  
  1632.       MSR 12h is Counter #0 (Read/Write)
  1633.         bits    Description
  1634.         63..??    Reserved
  1635.         ??..0    Current counter value
  1636.  
  1637.       MSR 13h is Counter #1 (Read/Write)
  1638.         bits    Description
  1639.         63..??    Reserved
  1640.         ??..0    Current counter value
  1641.  
  1642.       MSR 1000H is Processor Operation Register (IBM only)
  1643.         (486SLC/486SLC2/386SLC)
  1644.         bits    Description
  1645.         63..19    Reserved
  1646.         18    LWPLA (Low Power PLA) (reserved on IBM 386SLC)
  1647.         17    BUSRD (Bus Read)      (reserved on IBM 386SLC)
  1648.         16    CPGE  (Cache Parity Generate Error)
  1649.             (reserved on IBM 386SLC)
  1650.         15    ECNPX (Enable cachebility of NPX operands)
  1651.         14    EPWIA (Enable PWI ADS)
  1652.         13    ELPWH (Enable Low Power Halt Mode)
  1653.         12    XTOUT (Extend Out Instruction)
  1654.         11    CRLD  (Cache reload bit)
  1655.         10    EIKEN (Enable internal KEN#)
  1656.         9    DSCL  (Disable cache Lock Mode)
  1657.         8    Reserved
  1658.         7    CE     (Cache enable)
  1659.         6    EDBS   (Enable DBCS)
  1660.         5    EPWI   (Enable Power Interrupt)
  1661.         4    EFSP   (Enable Flush Snooping)
  1662.         3    ENSP   (Enable Snoop Input)
  1663.         2    A20M   (Address line 20 Mask)
  1664.         1    CPCE   (Cache Parity Checking Enable)
  1665.         0    CPE    (Cache Parity Error)
  1666.  
  1667.       MSR 1001H is Cache Region Control Register  (IBM only)
  1668.         ( IBM 386SLC/486SLC/486SLC2)
  1669.         bits    description
  1670.         63..40    Reserved
  1671.         39..32    Cache Memory Limit (CMLR)
  1672.         31..16    1st MB Read Only (LMROR)
  1673.         15..0    1st MB Cachable (LMCR)
  1674.  
  1675.       MSR 1002H is processor operation register (IBM only)
  1676.         (IBM 486SLC2 only)
  1677.         bits    description
  1678.         63..30    Reserved
  1679.         29    EEDFS (Enable External Dynamic Frequency Shift)
  1680.         28    DFSRY (Dynamic Frequency Shift Ready)
  1681.         27    DFSMD (Dynamic Frequency Shift Mode)
  1682.         26..24    CLKMD (Clock Mode)
  1683.             =000    x2
  1684.             =011    x1
  1685.         23..0    Reserved
  1686.  
  1687.  
  1688. Note: MSRs usefull documented in "Supplement to Pentium Processors User's
  1689. Manual" (Intel Corp. 1993,1994).
  1690.       IBM MSRs documented in "486SLC2 (tm) Microprocessor Data Sheet"
  1691. (IBM Corp. 1993,Order number: VT05452)
  1692.  
  1693.  
  1694. ---------------------------------------------------
  1695. RDTSC  - Read From Time Stamp Counter
  1696.  
  1697.  
  1698. CPU:  Pentium (tm)
  1699.  
  1700. Type of Instruction: System/User
  1701.  
  1702. Instruction: RDTSC
  1703.  
  1704. Description:
  1705.  
  1706.     IF (CR4.TSD=0) or ((CR4.TSD=1) and (CPL=0))  THEN
  1707.           {
  1708.           EDX:EAX <- TSC;
  1709.           }
  1710.         ELSE
  1711.           {
  1712.           General Protection Fault  INT 0DH (0)
  1713.           }
  1714.     END
  1715.  
  1716.  
  1717.  
  1718. Note: TSC is one of MSR and after global hardware reset (not SRESET , but
  1719. RESET ) it clear to 0000000000000000H.
  1720.       TSC is MSR index 10h. TSC may set using WRMSR instruction.
  1721.       TSC incremented every CPU core clock cycle.
  1722.  
  1723.  
  1724. Flags Affected: None
  1725.  
  1726. CPU mode: RM,PM0,SMM
  1727.       ; PM,VM if enable
  1728.  
  1729. Physical Form:         RDTSC
  1730. COP (Code of Operation): 0FH 31H
  1731. Clocks:         Pentium   : n/a [20-24]
  1732.  
  1733.  
  1734. ---------------------------------------------------
  1735. REPC  - Repeat While Carry Flag
  1736.  
  1737.  
  1738. CPU:  NEC V20, NEC V30, etc [ Vxx seria ]
  1739.       Sony V20, Sony V30
  1740.  
  1741. Type of Instruction: Prefix
  1742.  
  1743. Instruction: REPC
  1744.  
  1745. Description:
  1746.  
  1747.     DO
  1748.          CX=CX-1;
  1749.          SERVICE_PENDING_INTERRUPT;
  1750.          STRING_INSTRUCTION;
  1751.        LOOPWHILE ((CX<>0) AND (CF==1));
  1752.  
  1753.  
  1754. Flags Affected: None
  1755.  
  1756. CPU Mode: RM 8086
  1757.  
  1758. Physical Form:         REPC
  1759. COP (Code of Operation): 65H
  1760. Clocks:          NEC V20  : 2
  1761.           NEC V30  : 2
  1762.  
  1763.  
  1764. ---------------------------------------------------
  1765. REPNC  - Repeat While Not Carry Flag
  1766.  
  1767.  
  1768.  
  1769. CPU:  NEC V20, NEC V30, etc [ Vxx seria ]
  1770.       Sony V20, Sony V30
  1771.  
  1772. Type of Instruction: Prefix
  1773.  
  1774. Instruction: REPNC
  1775.  
  1776. Description:
  1777.  
  1778.     DO
  1779.          CX=CX-1;
  1780.          SERVICE_PENDING_INTERRUPT;
  1781.          STRING_INSTRUCTION;
  1782.        LOOPWHILE ((CX<>0) AND (CF<>1));
  1783.  
  1784.  
  1785. Flags Affected: None
  1786.  
  1787. CPU mode: RM 8086
  1788.  
  1789. Physical Form:         REPNC
  1790. COP (Code of Operation): 64H
  1791. Clocks:          NEC V20  : 2
  1792.           NEC V30  : 2
  1793.  
  1794.  
  1795. ---------------------------------------------------
  1796. RES3  - Restore All  CPU Registers
  1797.  
  1798.  
  1799. CPU:  AMD Am386SXLV, Am386DXLV
  1800.  
  1801.  
  1802. Type of Instruction: System Operation
  1803.             (Work only then CPL=0)
  1804.  
  1805. Instruction: RES3
  1806.  
  1807. Description:
  1808.           Load All Registers (Include Shadow Registers) from Table
  1809.           Which Begin on  place pointed ES:EDI
  1810.  
  1811. Note:
  1812.           This instruction is AMD analog Intel's LOADALL instruction
  1813.           but it's more i.c. return from SMM used this instruction.
  1814.  
  1815.           Then in SMM table is in SMRAM, then non SMM then table is
  1816.           in main memory.
  1817.  
  1818. Format of RES3 Table:
  1819.  
  1820.            Offset  Len  Description
  1821.         0H    4    CR0
  1822.         4H    4    EFLAGS
  1823.         8H    4    EIP
  1824.         CH    4    EDI
  1825.         10H    4    ESI
  1826.         14H    4    EBP
  1827.         18H    4    ESP
  1828.         1CH    4    EBX
  1829.         20H    4    EDX
  1830.         24H    4    ESX
  1831.         28H    4    EAX
  1832.         2CH    4    DR6
  1833.         30H    4    DR7
  1834.         34H    4    TR     (16 bit, zero filled up)
  1835.         38H    4    LDT  ---------
  1836.         3CH    4    GS   ---------
  1837.         40H    4    FS   ---------
  1838.         44H    4    DS   ---------
  1839.         48H    4    SS   ---------
  1840.         4CH    4    CS   ---------
  1841.         50H    4    ES   ---------
  1842.         54H    4    TSS.attrib
  1843.         58H    4    TSS.base
  1844.         5CH    4    TSS.limit
  1845.         60H    4    Reserved
  1846.         64H    4    IDT.base
  1847.         68H    4    IDT.limit
  1848.         6CH    4    REP OUTS overrun flag
  1849.         70H    4    GDT.base
  1850.         74H    4    GDT.limit
  1851.         78H    4    LDT.attrib
  1852.         7CH    4    LDT.base
  1853.         80H    4    LDT.limit
  1854.         84H    4    GS.attrib
  1855.         88H    4    GS.base
  1856.         8CH    4    GS.limit
  1857.         90H    4    FS.attrib
  1858.         94H    4    FS.base
  1859.         98H    4    FS.limit
  1860.         9CH    4    DS.attrib
  1861.         A0H    4    DS.base
  1862.         A4H    4    DS.limit
  1863.         A8H    4    SS.attrib
  1864.         ACH    4    SS.base
  1865.         B0H    4    SS.limit
  1866.         B4H    4    CS.attrib
  1867.         B8H    4    CS.base
  1868.         BCH    4    CS.limit
  1869.         C0H    4    ES.attrib
  1870.         C4H    4    ES.base
  1871.         C8H    4    ES.limit
  1872.                 Unknown Unusable area
  1873.         100H    4    Temporary register
  1874.         104H    4    -------------
  1875.         108H    4    -------------
  1876.         10CH    4    -------------
  1877.         110H    4    -------------
  1878.         114H    4    -------------
  1879.         118H    4    -------------
  1880.         11CH    4    -------------
  1881.         120H    4    -------------
  1882.         124H    4    Last EIP (Last instruction EIP for Restart)
  1883.  
  1884. Format    of Attrib field:
  1885.  
  1886.            Byte    Description
  1887.            0    0s
  1888.            1    AR (Access Right) byte in the Descriptor format
  1889.             Note:
  1890.                P bit is a valid bit
  1891.                if valid bit=0 then Shadow Register is invalid and
  1892.                   INT 0DH - General Protection Fault call
  1893.                DPL of SS,CS det. CPL
  1894.            2-3    0s
  1895.  
  1896.  
  1897. Flags Affected: All (FLAGS Register Reload)
  1898.  
  1899. CPU mode: RM,PM0,SMM
  1900.  
  1901. Physical Form:         RES3
  1902. COP (Code of Operation): 0FH 07H  Note: Code is same with Intel's LOADALL
  1903. Clocks:       Am386SXLV   : 366
  1904.        Am386DXLV   : 291
  1905.  
  1906. ---------------------------------------------------
  1907. RES4  - Restore All  CPU Registers
  1908.  
  1909.  
  1910. CPU:  AMD Am486SXLV, Am486DXLV
  1911.  
  1912.  
  1913. Type of Instruction: System Operation
  1914.             (Work only then CPL=0)
  1915.  
  1916. Instruction: RES3
  1917.  
  1918. Description:
  1919.           Load All Registers (Include Shadow Registers) from Table
  1920.           Which Begin on  place pointed ES:EDI
  1921.  
  1922. Note:
  1923.           This instruction is AMD analog Intel's LOADALL instruction
  1924.           but it's more i.c. return from SMM used this instruction.
  1925.  
  1926.           Then in SMM table is in SMRAM, then non SMM then table is
  1927.           in main memory.
  1928.  
  1929. Format of RES3 Table:
  1930.  
  1931.            Offset  Len  Description
  1932.         0H    4    CR0
  1933.         4H    4    EFLAGS
  1934.         8H    4    EIP
  1935.         CH    4    EDI
  1936.         10H    4    ESI
  1937.         14H    4    EBP
  1938.         18H    4    ESP
  1939.         1CH    4    EBX
  1940.         20H    4    EDX
  1941.         24H    4    ESX
  1942.         28H    4    EAX
  1943.         2CH    4    DR6
  1944.         30H    4    DR7
  1945.         34H    4    TR     (16 bit, zero filled up)
  1946.         38H    4    LDT  ---------
  1947.         3CH    4    GS   ---------
  1948.         40H    4    FS   ---------
  1949.         44H    4    DS   ---------
  1950.         48H    4    SS   ---------
  1951.         4CH    4    CS   ---------
  1952.         50H    4    ES   ---------
  1953.         54H    4    TSS.attrib
  1954.         58H    4    TSS.base
  1955.         5CH    4    TSS.limit
  1956.         60H    4    Reserved
  1957.         64H    4    IDT.base
  1958.         68H    4    IDT.limit
  1959.         6CH    4    REP OUTS overrun flag
  1960.         70H    4    GDT.base
  1961.         74H    4    GDT.limit
  1962.         78H    4    LDT.attrib
  1963.         7CH    4    LDT.base
  1964.         80H    4    LDT.limit
  1965.         84H    4    GS.attrib
  1966.         88H    4    GS.base
  1967.         8CH    4    GS.limit
  1968.         90H    4    FS.attrib
  1969.         94H    4    FS.base
  1970.         98H    4    FS.limit
  1971.         9CH    4    DS.attrib
  1972.         A0H    4    DS.base
  1973.         A4H    4    DS.limit
  1974.         A8H    4    SS.attrib
  1975.         ACH    4    SS.base
  1976.         B0H    4    SS.limit
  1977.         B4H    4    CS.attrib
  1978.         B8H    4    CS.base
  1979.         BCH    4    CS.limit
  1980.         C0H    4    ES.attrib
  1981.         C4H    4    ES.base
  1982.         C8H    4    ES.limit
  1983.                 Unknown Unusable area
  1984.         100H    4    Temporary register
  1985.         104H    4    -------------
  1986.         108H    4    -------------
  1987.         10CH    4    -------------
  1988.         110H    4    -------------
  1989.         114H    4    -------------
  1990.         118H    4    -------------
  1991.         11CH    4    -------------
  1992.         120H    4    -------------
  1993.         124H    4    Last EIP (Last instruction EIP for Restart)
  1994.         128H    4    PEIP - Previous SRAM space instruction pointer
  1995.         12EH    36    Unused
  1996.         150H    22    Floating Pointer Internal Registers (Am486DXLV)
  1997.  
  1998.  
  1999. Format    of Attrib field:
  2000.  
  2001.            Byte    Description
  2002.            0    0s
  2003.            1    AR (Access Right) byte in the Descriptor format
  2004.             Note:
  2005.                P bit is a valid bit
  2006.                if valid bit=0 then Shadow Register is invalid and
  2007.                   INT 0DH - General Protection Fault call
  2008.                DPL of SS,CS det. CPL
  2009.            2-3    0s
  2010.  
  2011.  
  2012. Flags Affected: All (FLAGS Register Reload)
  2013.  
  2014. CPU mode: RM,PM0,SMM
  2015.  
  2016. Physical Form:         RES4
  2017. COP (Code of Operation): 0FH 07H  Note: Code is same with Intel's LOADALL
  2018. Clocks:       Am486SXLV   : N/A
  2019.  
  2020. ---------------------------------------------------
  2021. RSDC  - Restore Register and Descriptor
  2022.  
  2023.  
  2024. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2
  2025.       IBM   BL486DX/DX2
  2026.       TI    Potomac
  2027.  
  2028. Type of Instruction: System
  2029.  
  2030. Instruction:  RSDC sreg,sorc
  2031.  
  2032.  
  2033. Description:
  2034.  
  2035.     sreg [selector,shadow_descriptor] <- sorc
  2036.  
  2037.     ; sorc is register and descriptor structure (see below)
  2038.  
  2039.     ; Note: This instruction load segment register
  2040.     ;    include shadow descriptor
  2041.  
  2042.  
  2043. Format or Register and Descriptor Structure:
  2044.     +00    Limit (15-0)
  2045.     +02    Base  (15-0)
  2046.     +04    Base  (23-16)
  2047.     +05    AR byte
  2048.     +06    AR2/Limit (19-16)
  2049.     +07    Base  (31-24)
  2050.     +08    Selector
  2051.     Length of structure is 10h
  2052.  
  2053.  
  2054.  
  2055. Flags Affected: None
  2056.  
  2057. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  2058.  
  2059.  
  2060.        1) CPL=0
  2061.        2) CCR1.bit1=1  ; SMI enable
  2062.        3) SMAR size > 0
  2063.        4A) in SMM
  2064.        4B) CCR1.bit2=1 ; SMAC is on
  2065.  
  2066.  
  2067.  
  2068. ++++++++++++++++
  2069.  
  2070. Physical Form: RSDC sgeg,mem80
  2071. COP (Code of Operation)     : 0FH 79H  [mm sreg3 mmm]
  2072. Clocks    IBM BL486DX: 10
  2073.  
  2074. Note: sreg3 is: 000 ES
  2075.         001 CS
  2076.         010 SS
  2077.         011 DS
  2078.         100 FS
  2079.         101 GS
  2080.  
  2081.  
  2082.  
  2083. ---------------------------------------------------
  2084. RSLDT  - Restore LDTR and Descriptor
  2085.  
  2086.  
  2087. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2
  2088.       IBM   BL486DX/DX2
  2089.       TI    Potomac
  2090.  
  2091. Type of Instruction: System
  2092.  
  2093. Instruction:  RSLDT sorc
  2094.  
  2095.  
  2096. Description:
  2097.  
  2098.     LDTR [selector,shadow_descriptor] <- sorc
  2099.  
  2100.     ; sorc is register and descriptor structure (see below)
  2101.  
  2102.  
  2103.  
  2104. Format or Register and Descriptor Structure:
  2105.     +00    Limit (15-0)
  2106.     +02    Base  (15-0)
  2107.     +04    Base  (23-16)
  2108.     +05    AR byte
  2109.     +06    AR2/Limit (19-16)
  2110.     +07    Base  (31-24)
  2111.     +08    Selector
  2112.     Length of structure is 10h
  2113.  
  2114.  
  2115.  
  2116. Flags Affected: None
  2117.  
  2118. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  2119.  
  2120.  
  2121.        1) CPL=0
  2122.        2) CCR1.bit1=1  ; SMI enable
  2123.        3) SMAR size > 0
  2124.        4A) in SMM
  2125.        4B) CCR1.bit2=1 ; SMAC is on
  2126.  
  2127.  
  2128.  
  2129. ++++++++++++++++
  2130.  
  2131. Physical Form: RSLDT  mem80
  2132. COP (Code of Operation)     : 0FH 7BH  [mm 000 mmm]
  2133. Clocks    IBM BL486DX: 10
  2134.  
  2135.  
  2136.  
  2137.  
  2138.  
  2139. ---------------------------------------------------
  2140. RSM  - Resume from System Managment Mode
  2141.  
  2142.  
  2143. CPU:  I486 SL Enhanced+,i486SL,i386CX,i386EX
  2144.  
  2145. Type of Instruction: System
  2146.  
  2147. Instruction: RSM
  2148.  
  2149. Description:
  2150.  
  2151.        Restore execution state from SMRAM and
  2152.        return to previous CPU mode
  2153.  
  2154.  
  2155. CPU mode: SMM only
  2156.      ( INT 6 - Undefined Opcode in all other mode )
  2157.  
  2158. Flags Affected: All
  2159.  
  2160. Note: CPU state restored from dump created entrance to SMM.
  2161.       The CPU leave SMM and return to previous mode.
  2162.       If CPU detect any invalid state it enters shutdown.
  2163.       This invalid states is:
  2164.        * The value stored in State Dump Base field is not 32K aligned
  2165.      address
  2166.        * Any Reserved bit of CR4 is set to 1 (Pentium only)
  2167.        * Any  illegal Combination of CR0:
  2168.        ** (PG=1 and PE=0)
  2169.        ** (NW=1 and CD=0)
  2170.  
  2171.  
  2172. Format of Execution State in SMRAM:
  2173.     Offset    Register
  2174.     7FFCh    CR0
  2175.     7FF8h    CR3
  2176.     7FF4h    EFLAGS
  2177.     7FF0h    EIP
  2178.     7FECh    EDI
  2179.     7FE8h    ESI
  2180.     7FE4h    EBP
  2181.     7FE0h    ESP
  2182.     7FDCh    EBX
  2183.     7FD8h    EDX
  2184.     7FD4h    ECX
  2185.     7FD0h    EAX
  2186.     7FCCh    DR7
  2187.     7FC4h    TR, upper 2 bytes reserved
  2188.     7FC0h    LDTR, upper 2 bytes reserved
  2189.     7FBCh    GS, upper 2 bytes reserved
  2190.     7FB8h    FS, upper 2 bytes reserved
  2191.     7FB4h    DS, upper 2 bytes reserved
  2192.     7FB0h    SS, upper 2 bytes reserved
  2193.     7FACh    CS, upper 2 bytes reserved
  2194.     7FA8h    ES, upper 2 bytes reserved
  2195.     7F98h    Reserved
  2196.     7F94h    IDT base  (4 bytes)
  2197.     7F8Ch    Reserved
  2198.     7F88h    GDT base  (4 bytes)
  2199.     7F04h    Reserved
  2200.     7F02h    Auto HALT Restart Slot (2 bytes)
  2201.         Bits 15..2 are reserved
  2202.         Bit 1  Bit 0    Description
  2203.         0    0    Resume to next instruction in interrupted
  2204.                 program
  2205.         0    1    Unpredictable
  2206.         1    0    Return to next instruction after HALT
  2207.         1    1    Return to HALT state
  2208.     7F00h    I/O Restart Slot (2 bytes)
  2209.         When RSM execution if I/O restart slot = 0FFh then
  2210.         EIP modified to instruction immediate preceding the
  2211.         SMI# request i.e. CPU automatically reexecute I/O
  2212.         instruction which be trapped by SMI.
  2213.     7EFCh    SMM Revision Identificator (4 bytes)
  2214.         Bits    Description
  2215.         31..18    Reserved
  2216.         17    If=1 Processor support SMBASE relocation
  2217.             else not support
  2218.         16    If =1 Processor support I/O Instruction Restart
  2219.         15..0    SMM Revision Identificator
  2220.             P5,486s = 0000h
  2221.             P54C when I/O Restarts enable = 0002h
  2222.     7EF8h    SMBASE Slot (4 bytes)
  2223.         SMBASE is 32KB aligned 32bit dword which contained a base
  2224.         address for SMRAM.
  2225.         Default value is 30000h
  2226.         Starting Address for for jump in SMM is:
  2227.           SMBASE+8000h
  2228.         Starting address for State Save area is
  2229.           SMBASE+[8000h+7FFFh]
  2230.     7E00h    Reserved
  2231.  
  2232.  
  2233. Note: In fields marked Reserved saved and restores next registers:
  2234.       CR1,CR2,CR3, hidden descriptors for CS,DS,ES,FS,SS,GS.
  2235.       Never saved registers: DR5-DR0,TR7-TR3,all FPU registers.
  2236.       More Information Not available Yet.
  2237.  
  2238.  
  2239. Physical Form:          RSM
  2240. COP (Code of Operation)      : 0FH AAH
  2241. Clocks:      i386CX      : 338
  2242.     i486 SL Enhanced  : ???
  2243.      IntelDX4      : 452        ; SMBASE relocation
  2244.               : 456        ; AutoHALT restart
  2245.               : 465        ; I/O Trap restart
  2246.          Pentium  : 83
  2247.  
  2248. ---------------------------------------------------
  2249. RSM  - Resume from SMM
  2250.  
  2251.  
  2252. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2
  2253.       IBM   BL486DX/DX2
  2254.       TI    Potomac
  2255.  
  2256. Type of Instruction: System
  2257.  
  2258. Instruction:  RSM
  2259.  
  2260.  
  2261. Description:
  2262.  
  2263.     RESTORE CPU STATE FROM SMM HEADER AT THE TOP OF
  2264.     SMM SPACE (defined by SMAR register);
  2265.     EXIT SMM;
  2266.  
  2267. Format of SMM Header:
  2268.     Offset    Length    Description
  2269.     -00h    -    Nothing (Top of SMM space) (Not accessable)
  2270.     -04h    32    DR7
  2271.     -08h    32    EFLAGS
  2272.     -0Ch    32    CR0
  2273.     -10h    32    Current EIP
  2274.     -14h    32    Next instruction EIP
  2275.     -16h    16    Reserved
  2276.     -18h    16    CS selector
  2277.     -1Ch    32    CS descriptor(63-32)
  2278.     -20h    32    CS descriptor(31-0)
  2279.     -24h    32    SMM Flags
  2280.             [ Not available in Cx486S/S2/D/D2]
  2281.             Bit   Description
  2282.             1    I (IN/INSx/OUT/OUTx Indicator)
  2283.                  If =0 current instruction performed
  2284.                    I/O read
  2285.                 =1 I/O write
  2286.             2    P (REP INSx/OUTx Prefix)
  2287.                  If =1 current instruction has REP pfix.
  2288.                 =0 not has REP pfix
  2289.             3    S (Software SMI)
  2290.                  If =1 current SMM is result of execution
  2291.                    SMINT instruction
  2292.                 =0 current SMM is result of hardware SMI
  2293.     -26h    16    I/O Write Data size
  2294.             [ Not available in Cx486S/S2/D/D2]
  2295.             1h = byte
  2296.             3h = word
  2297.             fh = dword
  2298.     -28h    16    I/O Write Address
  2299.             [ Not avaliable in Cx486S/S2/D/D2]
  2300.     -2Ch    32    I/O Write Data
  2301.             [ Not avaliable in Cx486S/S2/D/D2]
  2302.     -30h    32    ESI or EDI
  2303.             This field saved value of source/destination
  2304.             for restart INSx/OUTSx instruction
  2305.             [ Not avaliable in Cx486S/S2/D/D2]
  2306.  
  2307.  
  2308.  
  2309. Flags Affected: All
  2310.  
  2311. CPU mode: SMM
  2312.  
  2313. ++++++++++++++++
  2314.  
  2315. Physical Form: RSM
  2316. COP (Code of Operation)     : 0FH AAH
  2317. Clocks    IBM BL486DX: 76
  2318.  
  2319.  
  2320.  
  2321.  
  2322.  
  2323. ---------------------------------------------------
  2324. RSTS  - Restore TR and Descriptor
  2325.  
  2326.  
  2327. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2
  2328.       IBM   BL486DX/DX2
  2329.  
  2330. Type of Instruction: System
  2331.  
  2332. Instruction:  RSTS sorc
  2333.  
  2334.  
  2335. Description:
  2336.  
  2337.     TR [selector,shadow_descriptor] <- sorc
  2338.  
  2339.     ; sorc is register and descriptor structure (see below)
  2340.  
  2341.  
  2342.  
  2343. Format or Register and Descriptor Structure:
  2344.     +00    Limit (15-0)
  2345.     +02    Base  (15-0)
  2346.     +04    Base  (23-16)
  2347.     +05    AR byte
  2348.     +06    AR2/Limit (19-16)
  2349.     +07    Base  (31-24)
  2350.     +08    Selector
  2351.     Length of structure is 10h
  2352.  
  2353.  
  2354.  
  2355. Flags Affected: None
  2356.  
  2357. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  2358.  
  2359.  
  2360.        1) CPL=0
  2361.        2) CCR1.bit1=1  ; SMI enable
  2362.        3) SMAR size > 0
  2363.        4A) in SMM
  2364.        4B) CCR1.bit2=1 ; SMAC is on
  2365.  
  2366.  
  2367.  
  2368. ++++++++++++++++
  2369.  
  2370. Physical Form: RSTS  mem80
  2371. COP (Code of Operation)     : 0FH 7DH  [mm 000 mmm]
  2372. Clocks    IBM BL486DX: 10
  2373.  
  2374.  
  2375.  
  2376.  
  2377.  
  2378. ---------------------------------------------------
  2379. SETALC    - Set AL to Carry Flag
  2380.  
  2381.  
  2382. CPU:  Intel 80286 and all its clones and upward
  2383.     compatibility chips
  2384.  
  2385. Type of Instruction: User
  2386.  
  2387. Instruction: SETALC
  2388.  
  2389. Description:
  2390.  
  2391.     IF (CF=0) THEN AL:=0 ELSE AL:=FFH;
  2392.  
  2393.  
  2394. Flags Affected: None
  2395.  
  2396. CPU mode: RM,PM,VM,SMM
  2397.  
  2398. Physical Form:         SETALC
  2399. COP (Code of Operation): D6H
  2400. Clocks:          80286    : n/a   [3]
  2401.           80386    : n/a   [3]
  2402.          Cx486SLC  : n/a   [2]
  2403.           i486     : n/a   [3]
  2404.           Pentium  : n/a   [3]
  2405. Note: n/a is Time that Intel etc not say.
  2406.       [3] is real time it executed.
  2407.  
  2408.  
  2409.  
  2410. ---------------------------------------------------
  2411. SMI  - System Managment Interrupt
  2412.  
  2413. CPU:  AMD Am386SXLV,Am386DXLV
  2414.       AMD 486s
  2415.  
  2416. Type of Instruction: System
  2417.  
  2418. Instruction: SMI
  2419.  
  2420. Description:
  2421.  
  2422.     IF (SMIE=1) THEN
  2423.            {
  2424.            SAVE STATUS OF EXECUTION TO SMRAM;
  2425.            ENTER SMM;
  2426.            SMMS <- 1;
  2427.            }
  2428.        ELSE
  2429.           {
  2430.           INT 1;
  2431.           }
  2432.        END
  2433.  
  2434. Notes: SMIE is <Soft SMI Enable> (DR7.bit12)
  2435.            =1 Enable soft SMI
  2436.            =0 Disable soft SMI
  2437.        SMMS is <SMM status bit>     (DR6.bit12)
  2438.            =1 SMM was entered
  2439.            =0 SMM status cleared
  2440.  
  2441. Flags Affected: None
  2442.  
  2443. CPU mode: RM?,PM0
  2444.  
  2445. Physical Form:         SMI
  2446. COP (Code of Operation): F1H
  2447. Clocks:         Am386SXLV : 357
  2448.          Am386DXLV : 325
  2449.          Am486xxxx : Don't know, do you?
  2450.  
  2451. ---------------------------------------------------
  2452. SMINT - Software SMM Interrupt
  2453.  
  2454.  
  2455. CPU:  Cyrix Cx486DX/DX2
  2456.       IBM   BL486DX/DX2
  2457. Note: Never in Cx486S/S2/D/D2
  2458.  
  2459.  
  2460. Type of Instruction: System
  2461.  
  2462. Instruction:  SMINT
  2463.  
  2464.  
  2465. Description:
  2466.     SAVE CPU STATE TO SMM HEADER AT THE TOP OF
  2467.     SMM SPACE (defined by SMAR register);
  2468.     ENTER SMM MODE;
  2469.  
  2470.  
  2471. Format of SMM Header: Refer to Cyrix/IBM SMI Instruction
  2472.  
  2473.  
  2474. Flags Affected: None
  2475.  
  2476. CPU mode: CPL=0, CCR1.bit1=1, SMAR size >= 30h.
  2477.  
  2478.  
  2479. ++++++++++++++++
  2480.  
  2481. Physical Form: SMINT
  2482. COP (Code of Operation)     : 0FH 7EH
  2483. Clocks    IBM BL486DX: 24
  2484.  
  2485.  
  2486.  
  2487. ---------------------------------------------------
  2488. SVDC  - Save Register and Descriptor
  2489.  
  2490.  
  2491. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2
  2492.       IBM   BL486DX/DX2
  2493.       TI    Potomac
  2494.  
  2495. Type of Instruction: System
  2496.  
  2497. Instruction:  SVDC dest,sreg
  2498.  
  2499.  
  2500. Description:
  2501.  
  2502.     dest <- sreg [selector,shadow_descriptor]
  2503.  
  2504.     ; dest is register and descriptor structure (see below)
  2505.  
  2506.  
  2507.  
  2508. Format or Register and Descriptor Structure:
  2509.     +00    Limit (15-0)
  2510.     +02    Base  (15-0)
  2511.     +04    Base  (23-16)
  2512.     +05    AR byte
  2513.     +06    AR2/Limit (19-16)
  2514.     +07    Base  (31-24)
  2515.     +08    Selector
  2516.     Length of structure is 10h
  2517.  
  2518.  
  2519.  
  2520. Flags Affected: None
  2521.  
  2522. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  2523.  
  2524.  
  2525.        1) CPL=0
  2526.        2) CCR1.bit1=1  ; SMI enable
  2527.        3) SMAR size > 0
  2528.        4A) in SMM
  2529.        4B) CCR1.bit2=1 ; SMAC is on
  2530.  
  2531.  
  2532.  
  2533. ++++++++++++++++
  2534.  
  2535. Physical Form: SVDC mem80,sreg
  2536. COP (Code of Operation)     : 0FH 78H  [mm sreg3 mmm]
  2537. Clocks    IBM BL486DX: 18
  2538.  
  2539. Note: sreg3 is: 000 ES
  2540.         001 CS
  2541.         010 SS
  2542.         011 DS
  2543.         100 FS
  2544.         101 GS
  2545.  
  2546.  
  2547.  
  2548. ---------------------------------------------------
  2549. SVLDT  - Save LDTR and Descriptor
  2550.  
  2551.  
  2552. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2
  2553.       IBM   BL486DX/DX2
  2554.       TI    Potomac
  2555.  
  2556. Type of Instruction: System
  2557.  
  2558. Instruction:  SVLDT dest
  2559.  
  2560.  
  2561. Description:
  2562.  
  2563.     dest <- LDTR [selector,shadow_descriptor]
  2564.  
  2565.     ; dest is register and descriptor structure (see below)
  2566.  
  2567.  
  2568.  
  2569. Format or Register and Descriptor Structure:
  2570.     +00    Limit (15-0)
  2571.     +02    Base  (15-0)
  2572.     +04    Base  (23-16)
  2573.     +05    AR byte
  2574.     +06    AR2/Limit (19-16)
  2575.     +07    Base  (31-24)
  2576.     +08    Selector
  2577.     Length of structure is 10h
  2578.  
  2579.  
  2580.  
  2581. Flags Affected: None
  2582.  
  2583. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  2584.  
  2585.  
  2586.        1) CPL=0
  2587.        2) CCR1.bit1=1  ; SMI enable
  2588.        3) SMAR size > 0
  2589.        4A) in SMM
  2590.        4B) CCR1.bit2=1 ; SMAC is on
  2591.  
  2592.  
  2593.  
  2594. ++++++++++++++++
  2595.  
  2596. Physical Form: SVLDT mem80
  2597. COP (Code of Operation)     : 0FH 7AH  [mm 000 mmm]
  2598. Clocks    IBM BL486DX: 18
  2599.  
  2600.  
  2601.  
  2602.  
  2603. ---------------------------------------------------
  2604. SVTS  - Save TR and Descriptor
  2605.  
  2606.  
  2607. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2
  2608.       IBM   BL486DX/DX2
  2609.       TI    Potomac
  2610.  
  2611. Type of Instruction: System
  2612.  
  2613. Instruction:  SVTS dest
  2614.  
  2615.  
  2616. Description:
  2617.  
  2618.     dest <- TR [selector,shadow_descriptor]
  2619.  
  2620.     ; dest is register and descriptor structure (see below)
  2621.  
  2622.  
  2623.  
  2624. Format or Register and Descriptor Structure:
  2625.     +00    Limit (15-0)
  2626.     +02    Base  (15-0)
  2627.     +04    Base  (23-16)
  2628.     +05    AR byte
  2629.     +06    AR2/Limit (19-16)
  2630.     +07    Base  (31-24)
  2631.     +08    Selector
  2632.     Length of structure is 10h
  2633.  
  2634.  
  2635.  
  2636. Flags Affected: None
  2637.  
  2638. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  2639.  
  2640.  
  2641.        1) CPL=0
  2642.        2) CCR1.bit1=1  ; SMI enable
  2643.        3) SMAR size > 0
  2644.        4A) in SMM
  2645.        4B) CCR1.bit2=1 ; SMAC is on
  2646.  
  2647.  
  2648.  
  2649. ++++++++++++++++
  2650.  
  2651. Physical Form: SVTS mem80
  2652. COP (Code of Operation)     : 0FH 7CH  [mm 000 mmm]
  2653. Clocks    IBM BL486DX: 18
  2654.  
  2655.  
  2656.  
  2657.  
  2658. ---------------------------------------------------
  2659. UMOV  - Mov Data to Main (User) Memory
  2660.  
  2661.  
  2662. CPU:  AMD Am386SXLV,Am386DXLV
  2663.       AMD 486s
  2664.       IBM 486SLC2
  2665.  
  2666. Type of Instruction: Special System
  2667.  
  2668. Instruction: UMOV dest,sorc
  2669.  
  2670.  
  2671. Description:
  2672.  
  2673.       dest <- sorc;
  2674.  
  2675. Note!!!!!: But all memory operands placed in Main memory only !
  2676.       ( i.e. not in SMRAM then in SMM )
  2677.  
  2678. WARNING: UMC's CPUs hang on execution this instruction !!!!!!
  2679.      check that CPU is none UMC's before
  2680.  
  2681. Note:     On Cyrix's CPUs UMOV opcodes do nothing. This way used to
  2682.      determination of Cyrix Microprocessors.
  2683.  
  2684. Note:     Pentium P54C never support this instruction
  2685.  
  2686. Flags Affected:     None
  2687.  
  2688. CPU mode: RM?,PM?,VM?,SMM
  2689.  
  2690. +++++++++++++++++++++++
  2691. Physical Form:           UMOV     r/m8,r8
  2692. COP (Code of Operation)     : 0FH 10H Postbyte
  2693.  
  2694. Clocks:
  2695.       Am386SXLV or AM386DXLV:  2/2
  2696.       IBM 486SLC2        :  4
  2697. +++++++++++++++++++++
  2698. Physical Form:           UMOV     r/m16,r16
  2699.                UMOV     r/m32,r32
  2700. COP (Code of Operation)     : 0FH 11H Postbyte
  2701.  
  2702. Clocks:
  2703.       Am386SXLV or AM386DXLV:  2/2
  2704.       IBM 486SLC2        :  4
  2705. +++++++++++++++++++++++
  2706. Physical Form:           UMOV     r8,r/m8
  2707. COP (Code of Operation)     : 0FH 12H Postbyte
  2708.  
  2709. Clocks:
  2710.       Am386SXLV or AM386DXLV:  2/4
  2711.       IBM 486SLC2        :  4
  2712. +++++++++++++++++++++
  2713. Physical Form:           UMOV     r16,r/m16
  2714.                UMOV     r32,r/m32
  2715. COP (Code of Operation)     : 0FH 13H Postbyte
  2716.  
  2717. Clocks:
  2718.       Am386SXLV or AM386DXLV:  2/4
  2719.       IBM 486SLC2        :  4
  2720.  
  2721.  
  2722. ---------------------------------------------------
  2723. WBINVD    - Write Back and Invalidate Cache
  2724.  
  2725.  
  2726. CPU:  I486 +
  2727.  
  2728. Type of Instruction: System
  2729.  
  2730. Instruction: WBINVD
  2731.  
  2732. Description:
  2733.          IF (internal cache is WB and in WB mode) THEN
  2734.               {
  2735.               Write Back Internal Cache;
  2736.               }
  2737.          Flush internal cache;
  2738.          Signal external cache to Write Back;
  2739.          Signal external cache to Flush;
  2740.  
  2741.  
  2742. Notes: This instruction not work in Real Mode and  in
  2743. Protected mode work only in ring 0 ;
  2744.  
  2745. Flags Affected: None
  2746.  
  2747. CPU mode: PM0,SMM
  2748.  
  2749. Physical Form:         INVD
  2750. COP (Code of Operation): 0FH 09H
  2751. Clocks: Cyrix Cx486SLC : 4
  2752.           i486     : 5
  2753.           Pentium  : 2000+
  2754.  
  2755. ---------------------------------------------------
  2756. WRMSR  - Write to From Model Specified Register
  2757.  
  2758. CPU:  Pentium (tm), IBM 486SLC2
  2759.  
  2760. Type of Instruction: System
  2761.  
  2762. Instruction: WRMSR
  2763.  
  2764. Description:
  2765.  
  2766.     IF (ECX is valid number of MSR) and (CPL=0)  THEN
  2767.           {
  2768.           MSR [ECX] <- EDX:EAX;
  2769.           }
  2770.         ELSE
  2771.           {
  2772.           General Protection Fault  INT 0DH (0)
  2773.           }
  2774.     END
  2775.  
  2776.  
  2777.  
  2778. Flags Affected: None
  2779.  
  2780. Note: Refer to RDMSR for more Info.
  2781.  
  2782. CPU mode: RM,PM0,SMM
  2783.  
  2784. Physical Form:         WRMSR
  2785. COP (Code of Operation): 0FH 30H
  2786. Clocks:         Pentium   : 30-45
  2787.  
  2788. ---------------------------------------------------
  2789. XADD  - Exchange and addition
  2790.  
  2791.  
  2792. CPU:  i486+
  2793.  
  2794. Type of Instruction: User
  2795.  
  2796. Instruction: XADD dest,sorc
  2797.  
  2798.  
  2799. Description:
  2800.  
  2801.       Temporary <- dest;
  2802.       dest        <- dest + sorc;
  2803.       sorc        <- Temporary;
  2804.  
  2805.  
  2806. Flags Affected:     ZF,OF,SF,AF,PF,CF ( like ADD instruction ) ( see description)
  2807.  
  2808. CPU mode: RM,PM,VM,SMM
  2809.  
  2810. +++++++++++++++++++++++
  2811. Physical Form:           XADD     r/m8,r8
  2812. COP (Code of Operation)     : 0FH C0H Postbyte
  2813.  
  2814. Clocks:
  2815.        Intel i486     :  3/4
  2816.      Cyrix Cx486SLC     :  3/6
  2817.      Pentium (tm)     :  3/4
  2818.  
  2819. Penalty if cache miss     :
  2820.       Intel i486     : 6/2    ; Unlocked/Locked
  2821.      Cyrix Cx486SLC     : 0    ; N/A
  2822. +++++++++++++++++++++
  2823. Physical Form:           XADD     r/m16,r16
  2824.                XADD     r/m32,r32
  2825. COP (Code of Operation)     : 0FH C1H Postbyte
  2826.  
  2827. Clocks:
  2828.        Intel i486     :  3/4
  2829.      Cyrix Cx486SLC     :  3/6
  2830.      Pentium (tm)     :  3/4
  2831.  
  2832. Penalty if cache miss     :
  2833.       Intel i486     : 6/2    ; Unlocked/Locked
  2834.      Cyrix Cx486SLC     : 1    ; N/A
  2835.  
  2836.  
  2837.  
  2838. ---------------------------------------------------
  2839. XBTS    -  Extract  Bits String
  2840.  
  2841.  
  2842. CPU:  80386 step A0-B0 only
  2843.  
  2844. Type of Instruction: User
  2845.  
  2846. Instruction:  XBTS dest,base,bitoffset,len
  2847.  
  2848.  
  2849. Description:
  2850.          Write bit string length <len> bits from bitfield, defined by
  2851.         <base> and bitsoffset <bitoffset> from this base to start of
  2852.         the field to read. String read from this start field bit to
  2853.         higher memory addresses or register bits.
  2854.         And after it string placed to <dest> operand, lowest bit of
  2855.         register or memory to bit 0 of <dest>.
  2856.  
  2857. Note:         Use SHLD/SHRD instructions for extract bits strings.
  2858.          On 80386 steps B1+ this opcode generation INT 6,
  2859.          and on some of 486 other instruction replace this
  2860.          instruction opcode.
  2861.  
  2862.  
  2863. Flags Affected: None
  2864.  
  2865. CPU mode: RM,PM,VM
  2866.  
  2867. +++++++++++++++++++++++
  2868. Physical Form:      XBTS    r16,r/m16,AX,CL
  2869.           XBTS    r32,r/m32,EAX,CL
  2870. COP (Code of Operation)     : 0FH A6H Postbyte
  2871.  
  2872. Clocks:        XBTS
  2873. 80386:        6/13
  2874.  
  2875.  
  2876. -----------------------------------------------------
  2877. APPENDIX    A0
  2878. Cyrix Cx486SLC/DLC configuration Registers
  2879.  
  2880. Register    Full Register Name        Index    size(bits)
  2881. CCR0    Configuration Control Register #0    C0H    8
  2882. CCR1    Configuration Control Register #1    C1H    8
  2883. NCR1    Non-cacheble Region #0            C4H-C6H    24
  2884. NCR2    Non-cachable Region #1            C7H-C9H    24
  2885. NCR3    Non-cacheble Region #2            CAH-CCH
  2886. NCR4    Non-cacheble Region #4            CDH-CFH    24
  2887.  
  2888.  
  2889. For access to this register You need to do:
  2890.  
  2891. A) write INDEX_OF_REGISTER to I/O port #22H
  2892. B) wait 5-6 clocks
  2893. D) read/write DATA from/to register via I/O port #23
  2894.  
  2895. Note: If Index of register not in range C0H..CFH then Cyrix CPU
  2896.       generated external bus cycle. If You try to read I/O port
  2897.       #22H CPU will generated external bus cycle too. Then index
  2898.       is out of range all operations with port #23H will generate
  2899.       external bus cycle.
  2900.  
  2901. State After Reset:
  2902.     CCR0    00H
  2903.     CCR1    xxxx xxx0B
  2904.     NCR1    000Fh (SLC)
  2905.     NCR2    0
  2906.     NCR3    0
  2907.     NCR4    0
  2908.  
  2909. format of registers:
  2910.  
  2911. CCR0:
  2912. Bit    Name    Description
  2913. 7    SUSPEND
  2914.     If =1 then enable SUSP# and SUSPA# pins, which used for
  2915.     put CPU in PowerSave mode.
  2916.     If =0 disable
  2917.  
  2918. 6    CO    (Cache Organisation)
  2919.     If =0 2ways set associative
  2920.     If =1 Dirrect Mapped
  2921.  
  2922. 5    BARB
  2923.     If =1 then enable flushing internal cache when begining
  2924.     HOLD state.
  2925.     IF =0 disable.
  2926.  
  2927. 4    FLUSH
  2928.     If =1 enable input pin FLUSH#
  2929.     if =0 disable
  2930.  
  2931. 3    KEN
  2932.     If =1 enable input pin KEN#
  2933.     if =0 disable
  2934.  
  2935. 2    A20M
  2936.     If =1 enable input pin A20M#
  2937.     if =0 disable
  2938.  
  2939. 1    NC1
  2940.     If=1 then 640KB-1MB area never caching
  2941.     If=0 caching (but see NCRi)
  2942.  
  2943. 0    NC0
  2944.     If=1 then first 64K of each 1MB bounds not caching,
  2945.     when in Real or Virtual8086 mode
  2946.     If =0 caching
  2947.  
  2948.  
  2949. CCR1:
  2950. Bit    Name    Description
  2951. 7-1    Reserved
  2952. 0    RPL
  2953.     If =1 then enable RPLSET,RPLVAL# pins
  2954.     If =0 this pins are disable and float.
  2955.  
  2956. NCRi:
  2957. Byte    Bits    Description
  2958. 0    7-0    Address bits A31-A24 of non-cacheble region  start
  2959.         (Reserved for SLC)
  2960. 1    7-0    Address bits A23-A16 of non-cachable region start
  2961. 2    7-4    Address bits A15-A12 of non-cacheble region start
  2962. 2    3-0    Size of non-cacheble block:
  2963.         0000  Disable NCRi
  2964.         0001  4K
  2965.         0010  8K
  2966.         0011  16K
  2967.         0100  32K
  2968.         0101  64K
  2969.         0110  128K
  2970.         0111  256K
  2971.         1000  512K
  2972.         1001  1M
  2973.         1010  2M
  2974.         1011  4M
  2975.         1100  8M
  2976.         1101  16M
  2977.         1110  32M
  2978.         1111  4G
  2979.  
  2980. NCRi bytes:
  2981.  
  2982.  
  2983.     Byte
  2984. NCRi    0    1    2
  2985. NCR1    C4H    C5H    C6H
  2986. NCR2    C7H    C8H    C9H
  2987. NCR3    CAH    CBH    CCH
  2988. NCR4    CDH    CDH    CEH
  2989.  
  2990.  
  2991.  
  2992.  
  2993.  
  2994. ---------------------------------------------------
  2995. APPENDIX    A1
  2996. Cyrix Cx486S/S2/D/D2/DX/DX2
  2997. IBM   BL486DX/DX2
  2998. configuration Registers
  2999.  
  3000. Register    Full Register Name        Index    size(bits)
  3001. CCR1    Configuration Control Register #1    C1H    8
  3002. CCR2    Configuration Control Register #2    C2H    8
  3003. CCR3    Configuration Control Register #3    C3H    8
  3004. SMAR    SMM Address Region            CDH-CFH 24
  3005. DIR0    Device Identification register #0    FEH    8
  3006. DIR1    Device Identification register #1    FFH    8
  3007.  
  3008.  
  3009. For access to this register You need to do:
  3010.  
  3011. A) write INDEX_OF_REGISTER to I/O port #22H
  3012. B) wait 5-6 clocks
  3013. D) read/write DATA from/to register via I/O port #23
  3014.  
  3015. Note: If Index of register not in range C0H..CFH,FEH,FFH then Cyrix
  3016.       CPU generated external bus cycle. If You try to read I/O port
  3017.       #22H CPU will generated external bus cycle too. Then index
  3018.       is out of range all operations with port #23H will generate
  3019.       external bus cycle.
  3020.  
  3021. State After Reset:
  3022.     CCR1    00H
  3023.     CCR2    00H
  3024.     CCR3    00H
  3025.     SMAR    0
  3026.     DIR0    see DIR0 description
  3027.     DIR1    see DIR1 description
  3028.  
  3029.  
  3030. format of registers:
  3031.  
  3032. CCR1:
  3033. Bit    Name    Description
  3034. 7..5        Reserved
  3035.  
  3036. 4    NO_LOCK    (Negate LOCK#)
  3037. 3    MMAC    (Main Memory Access)
  3038.         If =1 then all data access which occur within SMI
  3039.         routine (when SMAC=1) accessing main memory instead
  3040.         SMM space
  3041.         =0 No affects on access
  3042. 2    SMAC    (System Managment Memory Access)
  3043.         If =1 Any access within SMM memory space issued with SMAADS#
  3044.         output active, SMI# ignored
  3045.         =0 No affects on access
  3046. 1    SMI    (Enable SMM pins)
  3047.         If =1 then enable SMI# i/o pin and SMADS# output pin
  3048.         =0 Float it
  3049. 0    RPL    (Enable RPL pins)
  3050.         If=1 then enable output pins RPLSET(1-0) and RPLVAL#
  3051.         =0 Float it
  3052.  
  3053.  
  3054.  
  3055. CCR2:
  3056. Bit    Name    Description
  3057. 7    SUSP    (Enable Suspend pins)
  3058.         If =1 SUSP# input and SUSPA# output pins enabled
  3059.         =0 Float
  3060. 6    BWRT    (Enable Burst Write Cycle)
  3061.         If =1 enable use of 16byte burst WB cycle
  3062.         =0 disable
  3063. 5    BARB    (Enable cache coherency on Bus Arbitration)
  3064.         If =1 enable write back of all dirty cache data when
  3065.         HOLD is requered and prior to asserting HLDA.
  3066.         =0 isable
  3067. 4    WT1    (Write-Through Region 1)
  3068.         If =1 Forces all writes to the 640KB-1MB region that
  3069.         hit in cache issued on the external bus
  3070. 3    HALT    (Suspend on HALT)
  3071.         If =1 CPU enters suspend mode following execution
  3072.         HLT instruction.
  3073. 2    LOCK_NW (Lock NW bit)
  3074.         If =1 Prohibits changing the state of NW bit in CR0
  3075. 1    WBAK    (Enable WB Cache Interface pins)
  3076.         If =1 then enable INVAL,WM_RST and HITM# pins
  3077.         =0 float it
  3078. 0        Reserved
  3079.  
  3080.  
  3081. CCR3:
  3082. Note: Cyrix Cx486S/D never have CCR3 register.
  3083. Bit    Name    Description
  3084. 7..2        Reserved
  3085. 1    NMIEN    (NMI Enable)
  3086.         If =1 then NMI enable during SMM
  3087.         If =0 NMI don't recognizing during SMM
  3088. 0      SMI_LOCK (SMM Register Lock)
  3089.         If =1 the following SMM control bits can not
  3090.         be modified:
  3091.              CCR1: bits 1,2,3
  3092.              CCR3: bit 1
  3093.         But this bit may be changed in SMM.
  3094.         This bit (SMI_LOCK) clearing RESET only.
  3095.  
  3096.  
  3097. SMAR:
  3098. (Index CDh)
  3099. Bit    Description
  3100. 7..0    A31..A24 bits of starting adress of SMM region
  3101. (Index CEh)
  3102. Bit    Description
  3103. 7..0    A23..A16 bits of starting adress of SMM region
  3104. (Index CFh)
  3105. Bit    Description
  3106. 7..4    A15..A12 bits of starting adress of SMM region
  3107. 3..0    Size of SMM region:
  3108.     0000    SMM region disabled
  3109.     0001    4K
  3110.     0010    8K
  3111.     0011    16K
  3112.     0100    32K
  3113.     0101    64K
  3114.     0110    128K
  3115.     0111    256K
  3116.     1000    512K
  3117.     1001    1M
  3118.     1010    2M
  3119.     1011    4M
  3120.     1100    8M
  3121.     1101    16M
  3122.     1110    32M
  3123.     1111    4K
  3124.  
  3125.  
  3126. DIR0:
  3127. Note: Cyrix Cx486S/D never have DIR0 register.
  3128. Bit    Description
  3129. 7..0    (Device Identification)
  3130.     for Cx486DX/BL486DX   = 1Ah
  3131.     for Cx486DX2/BL486DX2 = 1Bh
  3132.  
  3133.  
  3134. DIR1:
  3135. Note: Cyrix Cx486S/D never have DIR1 register.
  3136. Bit    Name    Description
  3137. 7..4    SID    Stepping Identificator
  3138. 3..0    RID    Revision Identification
  3139.     Note: For Cx486DX2-001 DIR1=08h
  3140.  
  3141.  
  3142.  
  3143.  
  3144. ------------------------------------------------
  3145. APPENDIX B
  3146. Codes which returned after Reset in EDX
  3147.  
  3148.                   DH     DL
  3149. Type of CPU   Steppin       Model ID   Revision
  3150.  
  3151. i386DX        A         (00h)    ???
  3152.         B0-B10          03h    03h
  3153.         D0            05h
  3154.         D1-D2            08h
  3155.  
  3156. Am386DX/DXL    A          03h    05h
  3157.         B            08h
  3158.  
  3159. i386SX        A0          23h    04h
  3160.         B            05h
  3161.         C,D,E            08h
  3162.  
  3163. Am386SX/SXL    A1          23h    05h
  3164.         B            08h
  3165.  
  3166. i386CX        A          23h    09h
  3167.  
  3168. i386EX        A          23h    09h
  3169.  
  3170. i386SX static    ???          23h    09h
  3171.  
  3172. i376        A0          33h    05h
  3173.         B            08h
  3174.  
  3175. i386SL        A0-A3          43h    0xh (05H)
  3176.         B0-B1                1xh
  3177.  
  3178. RapidCAD (tm)    A          03h    40h
  3179.  
  3180. IBM 386SLC    A          A3h    xxh
  3181.  
  3182. Cx486SLC    A          04h    10h
  3183.  
  3184. i486DX        A0/A1          04h    00h
  3185.         B2-B6            01h
  3186.         C0            02h
  3187.         C1            03h
  3188.         D0            04h
  3189.         cA2,cA3            10h
  3190.         cB0,cB1            11h
  3191.  
  3192. Am486DX        any          04h    12h
  3193.  
  3194. UMC U5SD    any          04h    1xh
  3195.  
  3196. i486SX        A0          04h    20h
  3197.         B0            22h
  3198.         D ??            23h ; SL Enhanced 1994
  3199.         cA0            27h
  3200.         cB0            28h
  3201.         E ??            2Ah ; SL Enhanced '94-'95
  3202.  
  3203. i487SX        A0          04h    20h
  3204.         B0            21h
  3205.  
  3206. UMC U5S        any          04h    23h
  3207.  
  3208. UMC U5SX 486-A    any          04h    23h
  3209.  
  3210. i486DX2    &    A0-A2          04h    32h
  3211. OverDrive (tm)    B1            33h
  3212.         C ??            35h ; SL Enhanced 1994
  3213.  
  3214. Am486DX2    any          04h    32h
  3215.  
  3216. Am486DXL2    any          04h    32h
  3217.  
  3218. Am486DX2    any          04h    32h ; 3 VOLT (Have 3xCLOCK mode!!!)
  3219.  
  3220. Am486DX2-80    any          04h    32h
  3221.  
  3222. i486SL        A          04h    40h
  3223.  
  3224. IntelSX2 (tm)    A          04h    5xh
  3225. i486SX2        ??          04h    5Bh
  3226. IntelSX2 (tm)    A          04h    5xh
  3227. OverDrive (tm)
  3228.  
  3229.  
  3230. WB IntelDX2    A          04h    7xh
  3231. (P24D)
  3232.  
  3233.  
  3234. IBM BL486DX2    A          04h    80h   ; PRELIMINARY
  3235.  
  3236. IntelDX4 (tm)    A          04h    80h
  3237.  
  3238. IBM  486SLC    A          A4h    0xh
  3239.  
  3240. IBM  486SLC2    A          A4h    1xh
  3241.         B            2xh
  3242.  
  3243. IBM  486BLX3    A          84h    xxh
  3244.  
  3245. Cyrix M5    all          00h    05h
  3246. (Cx486S/D)
  3247.  
  3248. Cyrix M6    all          00h    06h
  3249. (Cx486DX)
  3250.  
  3251. Cyrix M7    all          00h    07h
  3252. (Cx486DX2)
  3253.  
  3254. Pentium (P5)    Ax          05h    0xh
  3255.         Bx          05h    1xh
  3256.                   05h    15h    ; Have FPU bug!
  3257.                   05h    17h    ; Never have FPU bug!!
  3258.  
  3259. Pentium (P54C)    any          05h    2xh
  3260.                   05h    21h    ; Have FPU bug!
  3261.                   05h    22h    ; Have FPU bug!
  3262.                   05h    25h    ; No   FPU bug!!
  3263.  
  3264. Pentium Overdrive          15h    3xh
  3265. (Vcc=5V)(P24T)
  3266.  
  3267. Pentium Overdrive          15h    ??h
  3268. (Vcc=3.3V) (P24CT)
  3269.  
  3270. P6                  06h    xxh
  3271.  
  3272.  
  3273. --------------------------------------------
  3274. APPENDIX C0
  3275. iCOMP index for Intel's Microprocessors
  3276.  
  3277.  
  3278. i386SX-20        32
  3279. i386SX-25        39
  3280. i386SL-25        41
  3281. i386DX-25        49
  3282. i386DX-33        68
  3283. i486SX-20        78
  3284. i486SX-25        100  ; Base model for test iCOMP=100 by define
  3285. i486DX-25        122
  3286. i486SX-33        136
  3287. i486DX-33        166
  3288. IntelSX2-25/50        180
  3289. i486DX2-25/50        231
  3290. i486DX-50        249
  3291. i486DX2-33/66        297
  3292. IntelDX4-25/75        319  ; P24C
  3293. IntelDX4-33/100        435  ; P24C
  3294. Pentium OverDrive-25/63    443  ; P24T
  3295. Pentium-(510\60)    510  ; P5
  3296. Pentium-(567\66)    567  ; P5
  3297. Pentium OverDrive-33/83 581  ; P24T
  3298. Pentium-(610\75)    610  ; P54C
  3299. Pentium-(735\90)    735  ; P54C
  3300. Pentium-(815\100)    815  ; P54C
  3301.  
  3302.  
  3303.  
  3304.  
  3305. ----------------------------------------------
  3306. APPENDIX C1
  3307. Cyrix Microprocessors Relative Perfomance
  3308.  
  3309. Cyrix Inc. Used for declaration of perfomance of
  3310. theys microprocessors tests based on PC Bench 8.0
  3311. and normalization.
  3312.  
  3313. CPU        Perfomance Scores
  3314. Cx486SLC-25    36
  3315. Cx486SLC-33    39
  3316. Cx486SLC2-50    40
  3317. Cx486DLC-33    69
  3318. Cx486DLC-40    83
  3319. Cx486DX-33    100    ; <--- Base Point
  3320. Cx486DX-40    118
  3321. Cx486DX2-50    139
  3322. Cx486DX-50    148
  3323. Cx486DX2-66    179
  3324. Cx486DX2-V80    209
  3325.  
  3326.  
  3327.  
  3328.  
  3329. ------------------------------------------------
  3330. APPENDIX D
  3331. Pentium P54C+ Build-in APIC
  3332. (Advanced programmable Interrupt Controller)
  3333.  
  3334.  
  3335. Base Address of Build-in APIC in memory location
  3336. is 0FEE00000H.
  3337.  
  3338. Map of APIC REgisters:
  3339.  
  3340. Offset (hex)    Description            Read/Write state
  3341. 0        Reserved
  3342. 10        Reserved
  3343. 20        Local APIC ID            R/W
  3344. 30        Local APIC Version        R
  3345. 40-70        Reserved
  3346. 80        Task Priority Register        R/W
  3347. 90        Arbitration Priority Register    R
  3348. A0        Processor Priority Register    R
  3349. B0        EOI Register            W
  3350. C0        Remote read            R
  3351. D0        Logical Destination        R/W
  3352. E0        Destination Format Register    0..27  R
  3353.                         28..31 R/W
  3354. F0        Spurious Interrupt Vector Reg.    0..3   R
  3355.                         4..9   R/W
  3356. 100-170        ISR  0-255            R
  3357. 180-1F0        TMR  0-255            R
  3358. 200-270        IRR  0-255            R
  3359. 280        Error Status Register        R
  3360. 290-2F0        Reserved
  3361. 300        Interrupt Command Reg. (0-31)    R/W
  3362. 310        Interrupt Command Reg. (32-63)    R/W
  3363. 320        Local Vector Table (Timer)    R/W
  3364. 330-340        Reserved
  3365. 350        Local Vector Table (LINT0)    R/W
  3366. 360        Local Vector Table (LINT1)    R/W
  3367. 370        Local Vector Table (ERROR)    R/W
  3368. 380        Initial Count Reg. for Timer    R/W
  3369. 390        Current Count of Timer        R
  3370. 3A0-3D0        Reserved
  3371. 3E0        Timer Divide Configuration Reg.    R/W
  3372. 3F0        Reserved
  3373.  
  3374.  
  3375.  
  3376.  
  3377. ---------------------------------------------
  3378. APPENDIX E
  3379. Pentium (tm) Processor Pairing Instruction
  3380. (Integer part only, nor FPU)
  3381.  
  3382. Pentium (tm) is superscalar microprocessor
  3383. i.e. it may execute >1 instruction per CLK
  3384. cycle. It may execute maximum 2 instruction
  3385. per cycle.It have two integer pipes to execute
  3386. instruction. This pipes not same, and some
  3387. instruction may pairing (i.e. execute together)
  3388. (only if not link with this 2 instruction)
  3389. only in U pipe, some other only in V pipe, other
  3390. in any pipe,other absolutely not pairing and they
  3391. executed on U pipe only.
  3392.  
  3393. Note:
  3394.     PU - is pairable if issued to U pipe
  3395.     PV - is pairable if issued to V pipe
  3396.     UV - pairable in either pipe
  3397.  
  3398.  
  3399.  
  3400.  
  3401. ADC    Reg,Reg        PU
  3402.     Reg,Mem        PU
  3403.     Reg,Imm        PU
  3404.     Mem,Reg        PU
  3405.     Mem,Imm        PU
  3406. ADD    Reg,Reg        UV
  3407.     Reg,Mem        UV
  3408.     Reg,Imm        UV
  3409.     Mem,Reg        UV
  3410.     Mem,Imm        UV
  3411. AND    Reg,Reg        UV
  3412.     Reg,Mem        UV
  3413.     Reg,Imm        UV
  3414.     Mem,Reg        UV
  3415.     Mem,Imm        UV
  3416. CALL    direct        PV
  3417. CMP    Reg,Reg        UV
  3418.     Reg,Mem        UV
  3419.     Reg,Imm        UV
  3420.     Mem,Reg        UV
  3421.     Mem,Imm        UV
  3422. DEC    Reg        UV
  3423.     Mem        UV
  3424. INC    Reg        UV
  3425.     Mem        UV
  3426. Jcc    any        PV
  3427. JMP    Short        PV
  3428.     Direct        PV
  3429. LEA    Reg,Mem        UV
  3430. MOV    Reg,Reg/Mem/Imm    UV
  3431.     Mem,Reg        UV
  3432. NOP            UV
  3433. OR    Reg,Reg        UV
  3434.     Reg,Mem        UV
  3435.     Reg,Imm        UV
  3436.     Mem,Reg        UV
  3437.     Mem,Imm        UV
  3438. POP    Reg        UV
  3439. PUSH    Reg        UV
  3440.     Imm        UV
  3441. Rotates/Shifts:
  3442.     Reg,1        PU
  3443.     Mem,1        PU
  3444.     Reg,Imm        PU
  3445.     Mem,Imm        PU
  3446. SUB    Reg,Reg        UV
  3447.     Reg,Mem        UV
  3448.     Reg,Imm        UV
  3449.     Mem,Reg        UV
  3450.     Mem,Imm        UV
  3451. TEST    Reg,Reg        UV
  3452.     Mem,Reg        UV
  3453.     Acc,Imm        UV
  3454. XOR    Reg,Reg        UV
  3455.     Reg,Mem        UV
  3456.     Reg,Imm        UV
  3457.     Mem,Reg        UV
  3458.     Mem,Imm        UV
  3459.  
  3460. For more information refer to:
  3461. 1) Optimization for Intel's 32-Bit Processors
  3462.   (Application Note AP-500)
  3463.   Gary CArleton)
  3464.   // Intel Corp. 1993
  3465.   // Order Number 241799
  3466. 2) Supplement to the Pentium (tm) Processor User's
  3467.    Manual
  3468.   // Intel Corp. 1993.
  3469.  
  3470.  
  3471. ------------------------------------------------------------
  3472. APPENDIX  F    NON FP OPCODES
  3473.  
  3474.  
  3475. Base Format of opcodes:
  3476. <Basecode> <Postbyte> <offset> <immediate_operands>
  3477.  
  3478.  
  3479. Format of Postbyte:
  3480.  
  3481.   MM RRR MMM
  3482.  
  3483. MM  - Memory addresing mode
  3484. RRR - Register operand address
  3485. MMM - Memory operand address
  3486.  
  3487.  
  3488. RRR    Register Names
  3489. Fields    8bit    16bit    32bit
  3490. 000    AL    AX    EAX
  3491. 001    CL    CX    ECX
  3492. 010    DL    DX    EDX
  3493. 011    BL    BX    EBX
  3494. 100    AH    SP    ESP
  3495. 101    CH    BP    EBP
  3496. 110    DH    SI    ESI
  3497. 111    BH    DI    EDI
  3498.  
  3499.  
  3500. 16bit memory (No 32 bit memory address prefix):
  3501. MMM    Default    MM  Field
  3502. Field    Sreg    00        01        10        11=MMM is reg
  3503. 000    DS    [BX+SI]        [BX+SI+O8]    [BX+SI+O16]
  3504. 001    DS    [BX+DI]        [BX+DI+O8]    [BX+SI+O16]
  3505. 010    SS    [BP+SI]        [BP+SI+O8]    [BP+SI+O16]
  3506. 011    SS    [BP+DI]        [BP+DI+O8]    [BP+DI+O16]
  3507. 100    DS    [SI]        [SI+O8]        [SI+O16]
  3508. 101    DS    [DI]        [DI+O8]        [DI+O16]
  3509. 110    SS    [O16]        [BP+O8]        [BP+O16]
  3510. 111    DS    [BX]        [BX+O8]        [BX+O16]
  3511. Note: MMM=110,MM=00 Default Sreg is DS !!!!
  3512.  
  3513. 32bit memory (Has 67h 32 bit memory address prefix):
  3514. MMM    Default    MM  Field
  3515. Field    Sreg    00        01        10        11=MMM is reg
  3516. 000    DS    [EAX]        [EAX+O8]    [EAX+O32]
  3517. 001    DS    [ECX]        [ECX+O8]    [ECX+O32]
  3518. 010    DS    [EDX]        [EDX+O8]    [EDX+O32]
  3519. 011    DS    [EBX]        [EBX+O8]    [EBX+O32]
  3520. 100 see SIB    [SIB]        [SIB+O8]    [SIB+O32]
  3521. 101    SS    [O32]        [EBP+O8]    [EBP+O32]
  3522. 110    DS    [ESI]        [ESI+O8]    [ESI+O32]
  3523. 111    DS    [EDI]        [EDI+O8]    [EDI+O32]
  3524. Note: MMM=110,MM=00 Default Sreg is DS !!!!
  3525.  
  3526.  
  3527. SIB is (Scale/Base/Index):
  3528.   SS  BBB  III
  3529. Note: SIB address calculated as :
  3530.     <SIB address>=<Base>+<Index>*(2^(Scale))
  3531.  
  3532. Field    Default    Base
  3533. BBB    Sreg    Register    Note
  3534. 000    DS    EAX
  3535. 001    DS    ECX
  3536. 010    DS    EDX
  3537. 011    DS    EBX
  3538. 100    SS    ESP
  3539. 101    DS    O32        If MM=00   (Postbyte)
  3540.     SS    EBP        If MM<>00  (Postbyte)
  3541. 110    DS    ESI
  3542. 111    DS    EDI
  3543.  
  3544. Field    Index
  3545. III    register    Note
  3546. 000    EAX
  3547. 001    ECX
  3548. 010    EDX
  3549. 011    EBX
  3550. 100            Never Index SS can be 00
  3551. 101    EBP
  3552. 110    ESI
  3553. 111    EDI
  3554.  
  3555. Field    Scale coefficient
  3556. SS    =2^(SS)
  3557. 00    1
  3558. 01    2
  3559. 10    4
  3560. 11    8
  3561.  
  3562.  
  3563. Note:
  3564.       <No comments> this code are for 8086 and all other processors
  3565.       NECs  : for NEC/Sony V20/V30/V40/V50 and all clones and upgrades
  3566.       186+  : for 186/188 and higher
  3567.       286+  : for 80286 and higher
  3568.       386+  : for 80386 and higher
  3569.       486+  : for i486 and higher
  3570.       Pentium : for Pentiym
  3571.       <specified> : specified
  3572.  
  3573.  
  3574.  
  3575.  
  3576. Main Table [TABLE00]:
  3577.  
  3578. 00    ADD    mem8,reg8
  3579. 01    ADD    mem,reg
  3580. 02    ADD    reg8,mem8
  3581. 03    ADD    reg,mem
  3582. 04    ADD    AL,imm8
  3583. 05    ADD    AX,imm
  3584. 06    PUSH    ES
  3585. 07    POP    ES
  3586. 08    OR    mem8,reg8
  3587. 09    OR    mem,reg
  3588. 0A    OR    reg8,mem8
  3589. 0B    OR    reg,mem
  3590. 0C    OR    AL,imm8
  3591. 0D    OR    AX,imm
  3592. 0E    PUSH    CS
  3593. 0F    POP    CS    ; 8088 non CMOS versions
  3594.     >>>  TABLE 01    ; NECs & 286+
  3595.     Invalid Opcode    ; 186/188
  3596.  
  3597. 10    ADC    mem8,reg8
  3598. 11    ADC    mem,reg
  3599. 12    ADC    reg8,mem8
  3600. 13    ADC    reg,mem
  3601. 14    ADC    AL,imm8
  3602. 15    ADC    AX,imm
  3603. 16    PUSH    SS
  3604. 17    POP    SS
  3605. 18    SBB    mem8,reg8
  3606. 19    SBB    mem,reg
  3607. 1A    SBB    reg8,mem8
  3608. 1B    SBB    reg,mem
  3609. 1C    SBB    AL,imm8
  3610. 1D    SBB    AX,imm
  3611. 1E    PUSH    DS
  3612. 1F    POP    DS
  3613.  
  3614.  
  3615. 20    AND    mem8,reg8
  3616. 21    AND    mem,reg
  3617. 22    AND    reg8,mem8
  3618. 23    AND    reg,mem
  3619. 24    AND    AL,imm8
  3620. 25    AND    AX,imm
  3621. 26    ES:    segment prefix
  3622. 27    DAA
  3623. 28    SUB    mem8,reg8
  3624. 29    SUB    mem,reg
  3625. 2A    SUB    reg8,mem8
  3626. 2B    SUB    reg,mem
  3627. 2C    SUB    AL,imm8
  3628. 2D    SUB    AX,imm
  3629. 2E    CS:    segment prefix
  3630. 2F    DAS
  3631.  
  3632. 30    XOR    mem8,reg8
  3633. 31    XOR    mem,reg
  3634. 32    XOR    reg8,mem8
  3635. 33    XOR    reg,mem
  3636. 34    XOR    AL,imm8
  3637. 35    XOR    AX,imm
  3638. 36    SS:    segment prefix
  3639. 37    AAA
  3640. 38    CMP    mem8,reg8
  3641. 39    CMP    mem,reg
  3642. 3A    CMP    reg8,mem8
  3643. 3B    CMP    reg,mem
  3644. 3C    CMP    AL,imm8
  3645. 3D    CMP    AX,imm
  3646. 3E    DS:    segment prefix
  3647. 3F    AAS
  3648.  
  3649. 40    INC    AX
  3650. 41    INC    CX
  3651. 42    INC    DX
  3652. 43    INC    BX
  3653. 44    INC    SP
  3654. 45    INC    BP
  3655. 46    INC    SI
  3656. 47    INC    DI
  3657. 48    DEC    AX
  3658. 49    DEC    CX
  3659. 4A    DEC    DX
  3660. 4B    DEC    BX
  3661. 4C    DEC    SP
  3662. 4D    DEC    BP
  3663. 4E    DEC    SI
  3664. 4F    DEC    DI
  3665.  
  3666.  
  3667. 50    PUSH    AX
  3668. 51    PUSH    CX
  3669. 52    PUSH    DX
  3670. 53    PUSH    BX
  3671. 54    PUSH    SP
  3672. 55    PUSH    BP
  3673. 56    PUSH    SI
  3674. 57    PUSH    DI
  3675. 58    POP    AX
  3676. 59    POP    CX
  3677. 5A    POP    DX
  3678. 5B    POP    BX
  3679. 5C    POP    SP
  3680. 5D    POP    BP
  3681. 5E    POP    SI
  3682. 5F    POP    DI
  3683.  
  3684. 60    PUSHA            ;NECs & 186+
  3685. 61    POPA            ;NECs & 186+
  3686. 62    BOUND    reg,mem        ;NECs & 186+
  3687. 63    ARPL    reg,mem        ;286+ PM
  3688. 64    FS:    segment prefix    ;386+
  3689. 65    GS:    segment prefix    ;386+
  3690. 66    Memory access size prefix    ;386+
  3691. 67    Operands size prefix        ;386+
  3692. 68    PUSH    imm        ;NECs & 186+
  3693. 69    IMUL    reg,imm,mem    ;NECs & 186+
  3694. 6A    PUSH    imm8        ;NECs & 186+
  3695. 6B    IMUL    reg,imm8,mem    ;NECs & 186+
  3696. 6C    INSB            ;186+
  3697. 6D    INS            ;186+
  3698. 6E    OUTSB            ;186+
  3699. 6F    OUTS            ;186+
  3700.  
  3701. 70    JO    rel8
  3702. 71    JNO    rel8
  3703. 72    JC    rel8
  3704. 73    JNC    rel8
  3705. 74    JZ    rel8
  3706. 75    JNZ    rel8
  3707. 76    JNA    rel8
  3708. 77    JA    rel8
  3709. 78    JS    rel8
  3710. 79    JNS    rel8
  3711. 7A    JP    rel8
  3712. 7B    JNP    rel8
  3713. 7C    JL    rel8
  3714. 7D    JNL    rel8
  3715. 7E    JNG    rel8
  3716. 7F    JG    rel8
  3717.  
  3718.  
  3719. 80    code extention [1]
  3720. 81    code extention [2]
  3721. 82    code extention [3]
  3722. 83    code extention [4]
  3723. 84    TEST    mem8,reg8
  3724. 85    TEST    mem,reg
  3725. 86    XCHG    mem8,reg8
  3726. 87    XCHG    mem,reg
  3727. 88    MOV    mem8,reg8
  3728. 89    MOV    mem,reg
  3729. 8A    MOV    reg8,mem8
  3730. 8B    MOV    reg,mem
  3731. 8C    code extention [5]
  3732. 8D    LEA    reg,mem
  3733. 8E    code extention [6]
  3734. 8F    code extention [7]
  3735.  
  3736. 90    NOP
  3737. 91    XCHG    AX,CX
  3738. 92    XCHG    AX,DX
  3739. 93    XCHG    AX,BX
  3740. 94    XCHG    AX,SP
  3741. 95    XCHG    AX,BP
  3742. 96    XCHG    AX,SI
  3743. 97    XCHG    AX,DI
  3744. 98    CBW
  3745. 66 98    CWDE        ;386+
  3746. 99    CWD
  3747. 66 99    CDQ        ;386+
  3748. 9A    CALL    FAR    seg:offs
  3749. 9B    WAIT
  3750. 9C    PUSHF
  3751. 66 9C    PUSHFD        ; 386+
  3752. 9D    POPF
  3753. 66 9D    POPFD        ; 386+
  3754. 9E    SAHF
  3755. 9F    LAHF
  3756.  
  3757. A0    MOV    AL,[imm]
  3758. A1    MOV    AX,[imm]
  3759. A2    MOV    [imm],AL
  3760. A3    MOV    [imm],ax
  3761. A4    MOVSB
  3762. A5    MOVS
  3763. A6    CMPSB
  3764. A7    CMPS
  3765. A8    TEST    AL,imm8
  3766. A9    TEST    AX,imm
  3767. AA    STOSB
  3768. AB    STOS
  3769. AC    LODSB
  3770. AD    LODS
  3771. AE    SCASB
  3772. AF    SCAS
  3773.  
  3774.  
  3775. B0    MOV    AL,imm8
  3776. B1    MOV    CL,imm8
  3777. B2    MOV    DL,imm8
  3778. B3    MOV    BL,imm8
  3779. B4    MOV    AH,imm8
  3780. B5    MOV    CH,imm8
  3781. B6    MOV    DH,imm8
  3782. B7    MOV    BH,imm8
  3783. B8    MOV    AX,imm
  3784. B9    MOV    CX,imm
  3785. BA    MOV    DX,imm
  3786. BB    MOV    BX,imm
  3787. BC    MOV    SP,imm
  3788. BD    MOV    BP,imm
  3789. BE    MOV    SI,imm
  3790. BF    MOV    DI,imm
  3791.  
  3792. C0    code extention [8]
  3793. C1    code extention [9]
  3794. C2    RET    NEAR    imm
  3795. C3    RET    NEAR
  3796. C4    LES    reg,mem
  3797. C5    LDS    reg,mem
  3798. C6    code extention [10]
  3799. C7    code extention [11]
  3800. C8    ENTER    imm,imm8    ;NECs & 186+
  3801. C9    LEAVE            ;NECs & 186+
  3802. CA    RET    FAR    imm
  3803. CB    RET    FAR
  3804. CC    INT    3
  3805. CD    INT    imm8
  3806. CE    INTO
  3807. CF    IRET
  3808.  
  3809. D0    code extention    [12]
  3810. D1    code extention    [13]
  3811. D2    code extention    [14]
  3812. D3    code extention    [15]
  3813. D4    AAM    imm8         ; Note: NECs w/o imm8 but D4 0A only
  3814. D5    AAD    imm8         ; Note: NECs w/o imm8 but D4 0A only
  3815. D6    SETALC             ;286+
  3816. D7    XLAT
  3817. D8-DF    ESC    imm6,mem     ; Note: Refer to future part
  3818.                  ; Cooprocessor commands.
  3819.  
  3820. E0    LOOPNZ    rel8
  3821. E1    LOOPZ    rel8
  3822. E2    LOOP    rel8
  3823. E3    JCXZ    rel8
  3824. 66 E3    JECXZ    rel8         ; 386+
  3825. E4    IN    AL,imm8
  3826. E5    IN    AX,imm8
  3827. E6    OUT    imm8,AL
  3828. E7    OUT    imm8,AX
  3829. E8    CALL    NEAR    rel16
  3830. E9    JMP    NEAR    rel16
  3831. EA    JMP    FAR    seg:offs
  3832. EB    JMP    SHORT    rel8
  3833. EC    IN    AL,DX
  3834. ED    IN    AX,DX
  3835. EE    OUT    DX,AL
  3836. EF    OUT    DX,AX
  3837.  
  3838. F0    LOCK    prefix
  3839. F1    SMI             ; AMD Am386/486DXLV
  3840. F2    REPNZ
  3841. F3    REP/REPZ
  3842. F4    HLT
  3843. F5    CMC
  3844. F6    code extention [16]
  3845. F7    code extention [17]
  3846. F8    CLC
  3847. F9    STC
  3848. FA    CLI
  3849. FB    STI
  3850. FC    CLD
  3851. FD    STD
  3852. FE    code extention [18]
  3853. FF    code extention [19]
  3854.  
  3855.  
  3856.  
  3857.  
  3858.  
  3859.  
  3860.  
  3861. [TABLE 01]:
  3862. Note: First Byte of Operation is 0Fh
  3863.  
  3864. 00    Extended Opcode 20                ; 286+
  3865. 01    Extended Opcode 21                ; 286+
  3866. 02    LAR    reg,mem                    ; 286+
  3867. 03    LSL    reg,mem                    ; 286+
  3868. 04    LOADALL         ; Alternative 286        ; 286 only
  3869. 05    LOADALL         ; 286                ; 286 only
  3870. 06    CLTS                        ; 286+
  3871. 07    LOADALL         ; i386,486            ; 386-486, Never Pentium
  3872.     RES3         ; AMD Am386zXLV
  3873.     RES4         ; AMD Am486DXLV
  3874.     ICERET         ; IBM 386SLC,486SLC,486SLC2
  3875. 08    INVD                        ; 486+
  3876. 09    WBINVD                        ; 486+
  3877. 0A-0F    Reserved, INT 6
  3878. 10    UMOV    mem8,reg8 ; Really different op. space    ; 386-486,Never Pentium
  3879.               ; on AMD Amz86zXLV
  3880.     TEST1    mem8,CL      ; NEC V20+
  3881. 11    UMOV    mem,reg      ; see 0Fh,10h
  3882.     TEST1    mem,CL      ; NEC V20+
  3883. 12    UMOV    reg8,mem8 ; see 0Fh,10h
  3884.     CLEAR1    mem8,CL      ; NEC V20+
  3885. 13    UMOV    reg,mem      ; see 0Fh,10h
  3886.     CLEAR1    mem,CL      ; NEC V20+
  3887. 14    SET1    mem8,CL      ; NEC V20+
  3888. 15    SET1    mem,CL      ; NEC V20+
  3889. 16    NOT1    mem8,CL      ; NEC V20+
  3890. 17    NOT1    mem,CL      ; NEC V20+
  3891. 18    TEST1    mem8,imm8 ; NEC V20+
  3892. 19    TEST1    mem,imm8  ; NEC V20+
  3893. 1A    CLEAR1    mem8,imm8 ; NEC V20+
  3894. 1B    CLEAR1    mem,imm8  ; NEC V20+
  3895. 1C    SET1    mem8,imm8 ; NEC V20+
  3896. 1D    SET1    mem,imm8  ; NEC V20+
  3897. 1E    NOT1    mem8,imm8 ; NEC V20+
  3898. 1F    NOT1    mem,imm8  ; NEC V20+
  3899.  
  3900.  
  3901. 20    MOV    reg32,CRn ; 386+
  3902.     ADD4S          ; NEC V20+
  3903. 21    MOV    reg32,DRn ; 386+
  3904. 22    MOV    CRn,reg32 ; 386+
  3905.     SUB4S          ; NEC V20+
  3906. 23    MOV    DRn,reg32 ; 386+
  3907. 24    MOV    reg32,TRn ; 386-486 only (Pentium never have TRs)
  3908. 25
  3909. 26    MOV    TRn,reg32 ; 386-486 only
  3910.     CMPS4S          ; NEC V20+
  3911. 27    reserved opcode
  3912. 28    ROL4    mem8      ; NEC V20+
  3913. 29    reserved opcode
  3914. 2A    ROL4    mem8      ; NEC V20+
  3915. 2B-2F    reserved opcodes
  3916.  
  3917. 30    WRMSR          ; Pentium, IBM 386SLC,486SLC/SLC2
  3918. 31    RDTSC          ; Pentium
  3919.     INS    reg8,reg8 ; NEC V20+   ; Note: NECINS
  3920. 32    RDMSR          ; Pentium, IBM 386SLC,486SLC/SLC2
  3921. 33    EXT    reg8,reg8 ; NEC V20+
  3922.  
  3923.  
  3924. 78    SVDC    mem,sreg  ; Cyrix M5+
  3925. 79    RSDC    sreg,mem  ; Cyrix M5+
  3926. 7A    SVLDT    mem      ; Cyrix M5+
  3927. 7B    RSLDT    mem      ; Cyrix M5+
  3928. 7C    SVTS    mem      ; Cyrix M5+
  3929. 7D    RSTS    mem      ; Cyrix M5+
  3930. 7E    SMINT          ; Cyrix M6+
  3931.  
  3932.  
  3933. 80    JO    rel16    ; 386+
  3934. 81    JNO    rel16    ; 386+
  3935. 82    JC    rel16    ; 386+
  3936. 83    JNC    rel16    ; 386+
  3937. 84    JZ    rel16    ; 386+
  3938. 85    JNZ    rel16    ; 386+
  3939. 86    JNA    rel16    ; 386+
  3940. 87    JA    rel16    ; 386+
  3941. 88    JS    rel16    ; 386+
  3942. 89    JNS    rel16    ; 386+
  3943. 8A    JP    rel16    ; 386+
  3944. 8B    JNP    rel16    ; 386+
  3945. 8C    JL    rel16    ; 386+
  3946. 8D    JNL    rel16    ; 386+
  3947. 8E    JNG    rel16    ; 386+
  3948. 8F    JG    rel16    ; 386+
  3949.  
  3950. 90    SETO    mem8    ; 386+
  3951. 91    SETNO    mem8    ; 386+
  3952. 92    SETC    mem8    ; 386+
  3953. 93    SETNC    mem8    ; 386+
  3954. 94    SETZ    mem8    ; 386+
  3955. 95    SETNZ    mem8    ; 386+
  3956. 96    SETNA    mem8    ; 386+
  3957. 97    SETA    mem8    ; 386+
  3958. 98    SETS    mem8    ; 386+
  3959. 99    SETNS    mem8    ; 386+
  3960. 9A    SETP    mem8    ; 386+
  3961. 9B    SETNP    mem8    ; 386+
  3962. 9C    SETL    mem8    ; 386+
  3963. 9D    SETNL    mem8    ; 386+
  3964. 9E    SETNG    mem8    ; 386+
  3965. 9F    SETG    mem8    ; 386+
  3966.  
  3967. A0    PUSH    FS    ; 386+
  3968. A1    POP    FS    ; 386+
  3969. A2    CPUID        ; 486 SL enhanced,Pentium,UMC,i386CX
  3970. A3    BT    mem,reg    ; 386+
  3971. A4    SHLD    mem,reg,imm    ;386+
  3972. A5    SHLD    mem,reg,CL    ;386+
  3973. A6    XBTS    reg,mem,AX,CL    ; Intel (!!!) 80386 steps A0-B0
  3974.     CMPXCHG    mem8,reg8    ; Intel (!!!) 80486 steps A0-B0
  3975. A7    IBTS    mem,AX,CL,reg    ; Intel (!!!) 80386 steps A0-B0
  3976.     CMPXCHG mem,reg        ; Intel (!!!) 80486 steps A0-B0
  3977. A8    PUSH    GS    ; 386+
  3978. A9    POP    GS    ; 386+
  3979. AA    RSM        ; i486 SL Enhanced, i386CX, Pentium etc
  3980. AB    BTS    mem,reg ; 386+
  3981. AC    SHRD    mem,reg,imm    ;386+
  3982. AD    SHRD    mem,reg,CL    ;386+
  3983. AE
  3984. AF    IMUL    reg,mem    ; 386+
  3985.  
  3986. B0    CMPXCHG mem8,reg8    ; 486+ (Intel B1+ step only)
  3987. B0    CMPXCHG mem,reg        ; 486+ (Intel B1+ step only)
  3988. B2    LSS    reg,mem        ; 386+
  3989. B3    BTR    mem,reg        ; 386+
  3990. B4    LFS    reg,mem        ; 386+
  3991. B5    LGS    reg,mem        ; 386+
  3992. B6    MOVZX    reg,mem8    ; 386+
  3993. B7    MOVZX    reg32,mem    ; 386+
  3994. B8
  3995. B9
  3996. BA    code extention [22]
  3997. BB    BTC    mem,reg        ; 386+
  3998. BC    BSF    reg,mem        ; 386+
  3999. BD    BSR    reg,mem        ; 386+
  4000. BE    MOVSX    reg,mem8    ; 386+
  4001. BF    MOVSX    reg32,mem    ; 386+
  4002.  
  4003. C0    XADD    mem8,reg8    ; 486+
  4004. C1    XADD    mem,reg        ; 486+
  4005. C2-C6    reserved opcodes
  4006. C7    code extention [23]
  4007. C8    BSWAP    EAX        ; 486+
  4008. C9    BSWAP    ECX        ; 486+
  4009. CA    BSWAP    EDX        ; 486+
  4010. CB    BSWAP    EBX        ; 486+
  4011. CC    BSWAP    ESP        ; 486+
  4012. CD    BSWAP    EBP        ; 486+
  4013. CE    BSWAP    ESI        ; 486+
  4014. CF    BSWAP    EDI        ; 486+
  4015.  
  4016. D0-FF    reserved opcodes
  4017. FF    BRKEM    imm8        ; NEC V20+
  4018.  
  4019.  
  4020. **************************************************
  4021. CODE EXTENTIONS:
  4022.  
  4023. First byte(s) look at TABLES#00,01
  4024. Next byte have format
  4025.      MMOOOMMM  :  MM is memory mode (see postbyte)
  4026.           OOO select operation in this extention code field
  4027.           MMM is memory field (see Postbyte)
  4028.  
  4029.  
  4030.  
  4031. Code Extention # 1
  4032. (First byte(s) = 80h)
  4033. Field
  4034. OOO    Operation
  4035. 000    ADD    mem8,imm8
  4036. 001    OR    mem8,imm8
  4037. 010    ADC    mem8,imm8
  4038. 011    SBB    mem8,imm8
  4039. 100    AND    mem8,imm8
  4040. 101    SUB    mem8,imm8
  4041. 110    XOR    mem8,imm8
  4042. 111    CMP    mem8,imm8
  4043.  
  4044.  
  4045.  
  4046. Code Extention # 2
  4047. (First byte(s) = 81h)
  4048. Field
  4049. OOO    Operation
  4050. 000    ADD    mem,imm
  4051. 001    OR    mem,imm
  4052. 010    ADC    mem,imm
  4053. 011    SBB    mem,imm
  4054. 100    AND    mem,imm
  4055. 101    SUB    mem,imm
  4056. 110    XOR    mem,imm
  4057. 111    CMP    mem,imm
  4058.  
  4059. Code Extention # 3
  4060. (First byte(s) = 82h)
  4061. Note: i486 Reserved opcode, Never INT6 but do nothing
  4062. Field
  4063. OOO    Operation
  4064. 000    ADD    mem8,simm8
  4065. 001
  4066. 010    ADC    mem8,simm8
  4067. 011    SBB    mem8,simm8
  4068. 100
  4069. 101    SUB    mem8,simm8
  4070. 110
  4071. 111    CMP    mem8,simm8
  4072.  
  4073.  
  4074. Code Extention # 4
  4075. (First byte(s) = 83h)
  4076. Field
  4077. OOO    Operation
  4078. 000    ADD    mem,simm8
  4079. 001
  4080. 010    ADC    mem,simm8
  4081. 011    SBB    mem,simm8
  4082. 100
  4083. 101    SUB    mem,simm8
  4084. 110
  4085. 111    CMP    mem,simm8
  4086.  
  4087.  
  4088. Code Extention # 5
  4089. (First byte(s) = 8Ch)
  4090. Field
  4091. OOO    Operation
  4092. 000    MOV    mem,ES
  4093. 001    MOV    mem,CS
  4094. 010    MOV    mem,SS
  4095. 011    MOV    mem,DS
  4096. 100    MOV    mem,FS    ; 386+
  4097. 101    MOV    mem,GS    ; 386+
  4098. 110
  4099. 111
  4100.  
  4101.  
  4102. Code Extention # 6
  4103. (First byte(s) = 8Eh)
  4104. Field
  4105. OOO    Operation
  4106. 000    MOV    ES,mem
  4107. 001    MOV    CS,mem    ; Non CMOS version of 8086/8088 only
  4108. 010    MOV    SS,mem
  4109. 011    MOV    DS,mem
  4110. 100    MOV    FS,mem    ; 386+
  4111. 101    MOV    GS,mem    ; 386+
  4112. 110
  4113. 111
  4114.  
  4115. Code Extention # 7
  4116. (First byte(s) = 8Fh)
  4117. Note: i486 can eat any OOO.
  4118. Field
  4119. OOO    Operation
  4120. 000    POP    mem
  4121. 001
  4122. 010
  4123. 011
  4124. 100
  4125. 101
  4126. 110
  4127. 111
  4128.  
  4129. Code Extention # 8
  4130. (First byte(s) = C0h)
  4131. Field
  4132. OOO    Operation
  4133. 000    ROL    mem8,imm8 ; 186+
  4134. 001    ROR    mem8,imm8 ; 186+
  4135. 010    RCL    mem8,imm8 ; 186+
  4136. 011    RCR    mem8,imm8 ; 186+
  4137. 100    SHL    mem8,imm8 ; 186+
  4138. 101    SHR    mem8,imm8 ; 186+
  4139. 110    SAL    mem8,imm8 ; 186+
  4140. 111    SAR    mem8,imm8 ; 186+
  4141.  
  4142. Code Extention # 9
  4143. (First byte(s) = C1h)
  4144. Field
  4145. OOO    Operation
  4146. 000    ROL    mem,imm8 ; 186+
  4147. 001    ROR    mem,imm8 ; 186+
  4148. 010    RCL    mem,imm8 ; 186+
  4149. 011    RCR    mem,imm8 ; 186+
  4150. 100    SHL    mem,imm8 ; 186+
  4151. 101    SHR    mem,imm8 ; 186+
  4152. 110    SAL    mem,imm8 ; 186+
  4153. 111    SAR    mem,imm8 ; 186+
  4154.  
  4155. Code Extention # 10
  4156. (First byte(s) = C6h)
  4157. Note: i486 can eat any OOO field.
  4158. Field
  4159. OOO    Operation
  4160. 000    MOV    mem8,imm8
  4161. 001
  4162. 010
  4163. 011
  4164. 100
  4165. 101
  4166. 110
  4167. 111
  4168.  
  4169. Code Extention # 11
  4170. (First byte(s) = C7h)
  4171. Note: i486 can eat any OOO field
  4172. Field
  4173. OOO    Operation
  4174. 000    MOV    mem,imm16
  4175. 001
  4176. 010
  4177. 011
  4178. 100
  4179. 101
  4180. 110
  4181. 111
  4182.  
  4183.  
  4184.  
  4185. Code Extention # 12
  4186. (First byte(s) = D0h)
  4187. Field
  4188. OOO    Operation
  4189. 000    ROL    mem8,1
  4190. 001    ROR    mem8,1
  4191. 010    RCL    mem8,1
  4192. 011    RCR    mem8,1
  4193. 100    SHL    mem8,1
  4194. 101    SHR    mem8,1
  4195. 110    SAL    mem8,1
  4196. 111    SAR    mem8,1
  4197.  
  4198.  
  4199. Code Extention # 13
  4200. (First byte(s) = D1h)
  4201. Field
  4202. OOO    Operation
  4203. 000    ROL    mem,1
  4204. 001    ROR    mem,1
  4205. 010    RCL    mem,1
  4206. 011    RCR    mem,1
  4207. 100    SHL    mem,1
  4208. 101    SHR    mem,1
  4209. 110    SAL    mem,1
  4210. 111    SAR    mem,1
  4211.  
  4212.  
  4213. Code Extention # 14
  4214. (First byte(s) = D2h)
  4215. Field
  4216. OOO    Operation
  4217. 000    ROL    mem8,CL
  4218. 001    ROR    mem8,CL
  4219. 010    RCL    mem8,CL
  4220. 011    RCR    mem8,CL
  4221. 100    SHL    mem8,CL
  4222. 101    SHR    mem8,CL
  4223. 110    SAL    mem8,CL
  4224. 111    SAR    mem8,CL
  4225.  
  4226.  
  4227.  
  4228. Code Extention # 15
  4229. (First byte(s) = D3h)
  4230. Field
  4231. OOO    Operation
  4232. 000    ROL    mem,CL
  4233. 001    ROR    mem,CL
  4234. 010    RCL    mem,CL
  4235. 011    RCR    mem,CL
  4236. 100    SHL    mem,CL
  4237. 101    SHR    mem,CL
  4238. 110    SAL    mem,CL
  4239. 111    SAR    mem,CL
  4240.  
  4241. Code Extention # 16
  4242. (First byte(s) = F6h)
  4243. Field
  4244. OOO    Operation
  4245. 000    TEST    mem8,imm8
  4246. 001
  4247. 010    NOT    mem8
  4248. 011    NEG    mem8
  4249. 100    MUL    mem8
  4250. 101    IMUL    mem8
  4251. 110    DIV    mem8
  4252. 111    IDIV    mem8
  4253.  
  4254. Code Extention # 17
  4255. (First byte(s) = F7h)
  4256. Field
  4257. OOO    Operation
  4258. 000    TEST    mem,imm16
  4259. 001
  4260. 010    NOT    mem
  4261. 011    NEG    mem
  4262. 100    MUL    mem
  4263. 101    IMUL    mem
  4264. 110    DIV    mem
  4265. 111    IDIV    mem
  4266.  
  4267.  
  4268. Code Extention # 18
  4269. (First byte(s) = FEh)
  4270. Field
  4271. OOO    Operation
  4272. 000    INC    mem8
  4273. 001    DEC    mem8
  4274. 010
  4275. 011
  4276. 100
  4277. 101
  4278. 110
  4279. 111
  4280.  
  4281. Code Extention # 19
  4282. (First byte(s) = FFh)
  4283. Field
  4284. OOO    Operation
  4285. 000    INC    mem
  4286. 001    DEC    mem
  4287. 010    CALL    NEAR    mem
  4288. 011    CALL    FAR    mem
  4289. 100    JMP    NEAR    mem
  4290. 101    JMP    FAR    mem
  4291. 110    PUSH    mem
  4292. 111
  4293.  
  4294. Code Extention # 20
  4295. (First byte(s) = 0FH,00H)
  4296. Field
  4297. OOO    Operation
  4298. 000    SLDT    mem    ; 286+
  4299. 001    STR    mem    ; 286+
  4300. 010    LLDT    mem    ; 286+
  4301. 011    LTR    mem    ; 286+
  4302. 100    VERR    mem    ; 286+
  4303. 101    VERW    mem    ; 286+
  4304. 110
  4305. 111
  4306.  
  4307. Code Extention # 21
  4308. (First byte(s) = 0Fh,01h)
  4309. Field
  4310. OOO    Operation
  4311. 000    SGDT    mem    ; 286+
  4312. 001    SIDT    mem    ; 286+
  4313. 010    LGDT    mem    ; 286+
  4314. 011    LIDT    mem    ; 286+
  4315. 100    SMSW    mem    ; 286+
  4316. 101
  4317. 110    LMSW    mem    ; 286+
  4318. 111    INVLPG    mem    ; 486+
  4319.  
  4320.  
  4321. Code Extention # 22
  4322. (First byte(s) = 0Fh,BAh)
  4323. Field
  4324. OOO    Operation
  4325. 000
  4326. 001
  4327. 010
  4328. 011
  4329. 100    BT    mem,imm8 ; 386+
  4330. 101    BTS    mem,imm8 ; 386+
  4331. 110    BTR    mem,imm8 ; 386+
  4332. 111    BTC    mem,imm8 ; 386+
  4333.  
  4334. Code Extention # 23
  4335. (First byte(s) = 0Fh,C7h)
  4336. Field
  4337. OOO    Operation
  4338. 000
  4339. 001    CMPXCHG8B  mem    ; Pentium
  4340. 010
  4341. 011
  4342. 100
  4343. 101
  4344. 110
  4345. 111
  4346.  
  4347.  
  4348.  
  4349.  
  4350.  
  4351. ------------------------------------------
  4352. APPENDIX G
  4353.  
  4354. BUGS & CPU IDENTIFICATION INFO
  4355.  
  4356. 1) How to separate i386SX and i386DX
  4357.    (Cx486SLC and Cx486DLC)
  4358.    Note:  With 386DX type CPU possible to used
  4359.       287 class NPX, and bit 4 in CR0
  4360.       ET - Extention Type on DX we may to
  4361.       clear to 0, but for SX and REAL 486
  4362.       this bit always 1.
  4363.    Routine:
  4364.     mov    eax,cr0
  4365.     push    eax
  4366.     and    al,0efh
  4367.     mov    cr0,eax
  4368.     mov    eax,cr0
  4369.     test    al,10h
  4370.     pop    eax
  4371.     mov    cr0,eax
  4372.     jne    SX/SLC
  4373.     jmp    DX/DLC
  4374.  
  4375.  
  4376.  
  4377. 2) How to separate i486SX and i487SX/i486DX/DX2 etc
  4378.     Routine:
  4379. memory_location    DW    ?
  4380.     mov    memory_location,0
  4381.     fninit
  4382.     fstcw    memory_location
  4383.     cmp    memory_location,037Fh
  4384.     jz    i486SX
  4385.     jmp    i486DX/DX2etc/i487SX
  4386.  
  4387.  
  4388. 3) How to separate Cyrix's CPUs and other
  4389.        Be sure that Your CPU no Pentium before
  4390.        UMOV executed on Intel and other in
  4391.        Non SM modes as MOV.
  4392.        But Cyrix executed this instruction as
  4393.        Double NOP, and never generate INT 6.
  4394.        So.
  4395. Mem_Loc    DW  1
  4396.     xor    ax,ax
  4397.     umov    ax,Mem_Loc
  4398.     or    ax,ax
  4399.     jz    Cyrix
  4400.     jmp    No_Cyrix
  4401.  
  4402.  
  4403. 4) Standart Way: Part 1
  4404.    (Intel recomended this way)
  4405.  
  4406.     pushf
  4407.     pop    ax
  4408.     and    ax,0fffh    ; Clear bits 15..12
  4409.     push    ax
  4410.     popf
  4411.     and    ax,0f000h    ; Is bits 15..12=0 ?
  4412.     jz    286_CPU
  4413.     and    ax,8000h    ; Is bit 15=0
  4414.     jz    386_and_Higher
  4415.     jmp    86_88and186_186etc
  4416.  
  4417.  
  4418. 5) How separate 86/88, 186/188 and NECs
  4419.  
  4420.     mov    ax,1
  4421.     mov    cl,33
  4422.     shl    ax,cl
  4423.     jnz    186_188
  4424.     pusha        ; Executed on 8086/8088 as JMP $+2
  4425.     stc
  4426.     jc    NECs
  4427.     jmp    86_88
  4428.  
  4429.  
  4430. ------------------------------------------------
  4431. APPENDIX H
  4432. Internal Names Of Processors
  4433.  
  4434. (Intel)
  4435. P9    i386SX
  4436. P4    i486DX
  4437. P4S    i486SX
  4438. P23S    i487SX
  4439. P23T    OverDrive for PGA(169)
  4440. P4T    OverDrive for PGA(168)
  4441. P24S    i486DX2
  4442. P24T    Pentium OverDrive for  i486DX2 socket 3 (Vcc=5V,core=3V).
  4443. P24CT    Pentium OverDrive for Socket 3 (Vcc=3V)
  4444. P5    Pentium-60,66
  4445. P54C    Pentium-90,100,75 x1.5 with APIC and Multiprocessing features
  4446. P55C    Bugfix P54C with clock 133,150,2.5V
  4447. P24C    IntelDX4
  4448. P24D    i486DX2 with WB cache (IntelDX2 (tm) WriteBack Enhanced)
  4449. P54M    Overdrive ( include to P54C but P54C work too)
  4450. P6    ??????    (no comments)
  4451. P7    ??????    (no comments)
  4452.  
  4453. (Cyrix)
  4454. M5    Cx486S/S2
  4455. M6    Cx486D/D2
  4456. C6    Cx487D
  4457. M7    Cx486DX/Cx486DX2
  4458. M1    Pentium class CPU: 64bit with 32 Regs,WB 16KB cache
  4459. M1 SC    Hybrid from M1 and M7: new FPU,but only ONE scalar unit,
  4460.     so CPU none superscalar but work faster what M7.
  4461.  
  4462.  
  4463.  
  4464.  
  4465.  
  4466.  
  4467. ----------------------------------------------------
  4468. More Info? OK
  4469.  
  4470. EFLAGS register format
  4471. (C) (P) Potemkins' Hackers Group
  4472. Revision 1.00  23/09/94
  4473. ==============================================================================
  4474.  
  4475. [Pentium P5] [Pentium P54C] [IntelDX4]
  4476.  
  4477. 3322222222 2 2 1 1 1 1 1 1 11 1 1
  4478. 1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  4479. -----------------------------------------------------
  4480.        I V V A V R     N IO O D I T S Z   A    P   C
  4481. 0000000000 D I I C M F 0 T PL F F F F F F 0 F 0 F 1 F
  4482.          P F
  4483. -----------------------------------------------------
  4484.  
  4485.  
  4486.  
  4487. =============================================================================
  4488.  
  4489.  
  4490. [i486 SL Enhanced SX,DX,DX2] [IntelSX2]
  4491. [UMC]
  4492.  
  4493. 3322222222 2 2 1 1 1 1 1 1 11 1 1
  4494. 1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  4495. -----------------------------------------------------
  4496.        I     A V R     N IO O D I T S Z   A    P   C
  4497. 0000000000 D 0 0 C M F 0 T PL F F F F F F 0 F 0 F 1 F
  4498. -----------------------------------------------------
  4499.  
  4500.  
  4501. =============================================================================
  4502.  
  4503.  
  4504. [i486 SX,DX,DX2] [OverDrive] [M5,M6,M7] [AMD Am486DX/DXL/DX2/DXL2 ] etc
  4505. [IBM BL486DX/DX2] [Cx486SLC/DLC/SLC2/DLC2]
  4506.  
  4507. 3322222222 2 2 1 1 1 1 1 1 11 1 1
  4508. 1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  4509. -----------------------------------------------------
  4510.          A V R     N IO O D I T S Z   A    P   C
  4511. 0000000000 0 0 0 C M F 0 T PL F F F F F F 0 F 0 F 1 F
  4512. -----------------------------------------------------
  4513.  
  4514.  
  4515. ==============================================================================
  4516.  
  4517. [i386 SX,DX,CX,EX]  [AMD Am386 ] [C&T 38600 ] etc
  4518. [IBM 486SLC2]
  4519.  
  4520. 3322222222 2 2 1 1 1 1 1 1 11 1 1
  4521. 1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  4522. -----------------------------------------------------
  4523.            V R     N IO O D I T S Z   A    P   C
  4524. 0000000000 0 0 0 0 M F 0 T PL F F F F F F 0 F 0 F 1 F
  4525. -----------------------------------------------------
  4526.  
  4527.  
  4528. ==============================================================================
  4529.  
  4530. [i376]
  4531.  
  4532. 3322222222 2 2 1 1 1 1 1 1 11 1 1
  4533. 1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  4534. -----------------------------------------------------
  4535.              R     N IO O D I T S Z   A    P   C
  4536. 0000000000 0 0 0 0 0 F 0 T PL F F F F F F 0 F 0 F 1 F
  4537. -----------------------------------------------------
  4538.  
  4539. ===============================================================================
  4540.  
  4541. [i286 and all clones]
  4542.  
  4543. 1 1 11 1 1
  4544. 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  4545. ------------------------------
  4546.   N IO O D I T S Z   A     P   C
  4547. 0 T PL F F F F F F 0 F 0 F 1 F
  4548. ------------------------------
  4549.  
  4550.  
  4551. ================================================================================
  4552.  
  4553. [NEC/Sony V20/V30]
  4554.  
  4555. 1 1 1 1 1 1
  4556. 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
  4557. -------------------------------
  4558. M    O D I T S Z   A      P   C
  4559. D 1 1 1 F F F F F F 0 F 0 F 1 F
  4560. -------------------------------
  4561.  
  4562.  
  4563.  
  4564. ================================================================================
  4565.  
  4566. [80x186 ,EA,EB,EC,XL]  [8086/88 and all clones]
  4567.  
  4568. 1 1 1 1 1 1
  4569. 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
  4570. -------------------------------
  4571.     O D I T S Z   A      P   C
  4572. 1 1 1 1 F F F F F F 0 F 0 F 1 F
  4573. -------------------------------
  4574.  
  4575.  
  4576. ==============================================================================
  4577.  
  4578. ID   - Identification Flag
  4579. VIP  - Virtual Interrupt Pending
  4580. VIF  - Virtual Interrupt Flag
  4581. AC   - Align Check
  4582. VM   - Virtual 8086 Mode
  4583. RF   - Resume Flag
  4584. MD   - Mode Flag
  4585. NT   - Nested Task flag
  4586. IOPL - Input/Output Privelege Level
  4587. OF   - Overflow Flag
  4588. DF   - Direction Flag
  4589. IF   - Interrupt Flag
  4590. TF   - Trap Flag
  4591. SF   - Sign Flag
  4592. ZF   - Zero Flag
  4593. AF   - Auxiliary Carry Flag
  4594. PF   - Parity Flag
  4595. CF   - Carry Flag
  4596.  
  4597.  
  4598.  
  4599. ==============================================================================
  4600. CR0 register format
  4601. (C) (P) Potemkins' Hackers Group
  4602. Revision 1.00     23/02/95
  4603. ==============================================================================
  4604.  
  4605. [Pentium P5] [Pentium P54C]
  4606.  
  4607. 3 3 2 2222222221 1 1 1 111111
  4608. 1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
  4609. ---------------------------------------------
  4610. P C N         A   W          N   T E M P
  4611. G D W 0000000000 M 0 P 0000000000 E 1 S M P E
  4612.  
  4613. ---------------------------------------------
  4614.  
  4615.  
  4616.  
  4617. =============================================================================
  4618.  
  4619. [IntelDX4] [486DX/DX2, IntelDX4 ]
  4620.  
  4621.  
  4622. 3 3 2 2222222221 1 1 1 111111
  4623. 1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
  4624. ---------------------------------------------
  4625. P C N         A   W              T      M P
  4626. G D W 0000000000 M 0 P 0000000000 * 1 S 1 P E
  4627.  
  4628. ---------------------------------------------
  4629.  
  4630. ==============================================================================
  4631.  
  4632.  
  4633.  
  4634. [Cx486SLC]
  4635.  
  4636.  
  4637. 3 3 2 2222222221 1 1 1 111111
  4638. 1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
  4639. ---------------------------------------------
  4640. P C         A   W              T E M P
  4641. G D 0 0000000000 M 0 P 0000000000 0 1 S M P E
  4642.  
  4643. ---------------------------------------------
  4644.  
  4645. ==============================================================================
  4646.  
  4647. [Cx486DLC]
  4648.  
  4649.  
  4650. 3 3 2 2222222221 1 1 1 111111
  4651. 1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
  4652. ---------------------------------------------
  4653. P C N         A   W            E T E M P
  4654. G D W 0000000000 M 0 P 0000000000 0 T S M P E
  4655.  
  4656. ---------------------------------------------
  4657.  
  4658. ==============================================================================
  4659.  
  4660.  
  4661.  
  4662. [Intel i486SX,SX2]
  4663.  
  4664.  
  4665. 3 3 2 2222222221 1 1 1 111111
  4666. 1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
  4667. ---------------------------------------------
  4668. P C N         A   W              T E M P
  4669. G D W 0000000000 M 0 P 0000000000 * 1 S M P E
  4670.  
  4671. ---------------------------------------------
  4672.  
  4673. ==============================================================================
  4674.  
  4675. [IBM 486SLC2]
  4676.  
  4677.  
  4678. 3 32222222222111 1 111111
  4679. 1 09876543210987 6 54321098765 4 3 2 1 0
  4680. ---------------------------------------------
  4681. P         W         T E M P
  4682. G 00000000000000 P 0000000000  1 S M P E
  4683.  
  4684. ---------------------------------------------
  4685.  
  4686. ==============================================================================
  4687.  
  4688. [Intel i386SX]
  4689.  
  4690.  
  4691. 3 322222222221111111111
  4692. 1 09876543210987654321098765 4 3 2 1 0
  4693. ---------------------------------------------
  4694. P                   T E M P
  4695. G 0000000000000000000000000  1 S M P E
  4696. ---------------------------------------------
  4697.  
  4698. ==============================================================================
  4699.  
  4700.  
  4701. [Intel i386DX]
  4702.  
  4703.  
  4704. 3 322222222221111111111
  4705. 1 09876543210987654321098765 4 3 2 1 0
  4706. ---------------------------------------------
  4707. P                 E T E M P
  4708. G 0000000000000000000000000  T S M P E
  4709. ---------------------------------------------
  4710.  
  4711. ==============================================================================
  4712.  
  4713. [80286]
  4714.  
  4715. Note: None CR0, but MSW
  4716.  
  4717. 111111
  4718. 543210987654 3 2 1 0
  4719. ---------------------
  4720.          T E M P
  4721. 000000000000 S M P E
  4722. ---------------------
  4723.  
  4724. ==============================================================================
  4725.  
  4726.  
  4727. PE - Protection Enable
  4728. MP - Monitor Processor
  4729. EM - Emulation
  4730. TS - Task Switch
  4731. ET - Extention Type
  4732. NE - Numeric Exception
  4733. WP - Write protect
  4734. AM - Align Mode
  4735. NW - No Write
  4736. CD - Cache Disable
  4737. PG - Paging
  4738.  
  4739. ==============================================================================
  4740. CR4 register format
  4741. (C) (P) Potemkins' Hackers Group
  4742. Revision 1.00     23/09/94
  4743. ==============================================================================
  4744.  
  4745. [Pentium P5] [Pentium P54C]
  4746.  
  4747. 3322222222221111111111
  4748. 1098765432109876543210987 6 5 4 3 2 1 0
  4749. ---------------------------------------
  4750.               M   P D T P V
  4751. 0000000000000000000000000 C 0 S E S V M
  4752.               E   E      D I E
  4753. ----------------------------------------
  4754.  
  4755.  
  4756.  
  4757. =============================================================================
  4758.  
  4759. [IntelDX4] [486s SL Enhanced]
  4760.  
  4761. 3322222222221111111111
  4762. 109876543210987654321098765432 1 0
  4763. ----------------------------------
  4764.                    P V
  4765. 000000000000000000000000000000 V M
  4766.                    I E
  4767. ----------------------------------
  4768.  
  4769.  
  4770. ==============================================================================
  4771.  
  4772.  
  4773. MCE - Machine Check Enable
  4774. PSE - Page Size Extention
  4775. DE  - Debbuging Expection
  4776. TSD - Time Stamp Disable
  4777. PVI - Protected mode Virtual Interrupt
  4778. VME - Virtual Mode Exception
  4779.  
  4780. ---------------------------------------------
  4781. APPENDIX LAST
  4782. List of the Literature
  4783.  
  4784.  
  4785. 1) "Pentium (tm) Famaly User's Manual
  4786.     Volume 3: Architecture and Programming Manual"
  4787.    // Intel Corp. 1994
  4788.    ;; Order number: 241430
  4789.  
  4790. 2) "Blue Lightning 486DX2 3 and 5 Volt Microprocessors
  4791.     Databook"
  4792.    // IBM Corp./Cyrix Corp. 1994
  4793.    ;; Order Number: MPIDX2DSU-01
  4794.  
  4795. 3) "486SLC2 (tm) Microprocessor"
  4796.    Data Sheet.
  4797.    // IBM Corp. 1993
  4798.    ;; Order number VT05452
  4799.  
  4800. 4) "Cyrix Cx486SLC (tm) Microprocessor"
  4801.    // Cyrix Corp. 1991
  4802.    ;; Order Number 94073
  4803.  
  4804. 5)  "3-Volt System Logic for Personal Computers"
  4805.     // Advanced Micro Devices Inc. 1993
  4806.     ;; Order number: 17028B
  4807.  
  4808. 6)  "IntelDX4 (tm) Processor Data Book"
  4809.     // Intel Corp. 1994
  4810.     ;; Order number: 241944
  4811.  
  4812. 7)  "Intel Processor Identification with the
  4813.      CPUID instruction"
  4814.     // Intel Corp. 1993,1994
  4815.     ;; Order number: 241618
  4816.  
  4817. 8)  "82489DX Advanced Programmable Interrupt
  4818.      Controller"
  4819.     Application Note: AP-485
  4820.     // Intel Corp. 1993
  4821.     ;; Order number: 290446
  4822.  
  4823. 9)  "Optimization for Intel's 32-bit Processors"
  4824.     Application Note: AP-500
  4825.     // Intel Corp. 1993
  4826.     ;; Order number 241799
  4827.  
  4828. A)  "MultiProcessor Specification Version 1.1"
  4829.     // Intel Corp. 1993
  4830.     ;; Order Number: 242016
  4831.  
  4832.  
  4833. ----------------------------------------------------------
  4834. If Your (Reader) interested for some info about 80x86 CPUs
  4835. lets send request to
  4836.               avp@iron.misa.ac.ru
  4837. and we place some information in next versions of our doc,
  4838. or answer directly if we can.
  4839. -----------------------------------------------------------
  4840. If Your found some errors or incorrections in this text
  4841. please    send info 'bout it.
  4842. -----------------------------------------------------------
  4843. Thanx for  Alex A.Afonasov,Yury V.Temkin,
  4844.        and all other numbers of
  4845.        Potemkin's Hackers Group.
  4846.        - - - - - - - - - - - - - -
  4847. Special Thanks for  Alex (DVM).
  4848. ------------------------------------------------------------
  4849. Sorry, But EOF
  4850.